knightL

H

Apr 19th, 2011
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <map>
  6. #include <string.h>
  7. using namespace std;
  8. #define SZ 10000
  9.  
  10. short dp[SZ][SZ];
  11. int N;
  12. int a[SZ];
  13.  
  14. int main()
  15. {
  16.     int l,r;
  17.     short res=2;
  18.     scanf("%d",&N);
  19.     for(int i=0;i<N;i++)
  20.     {
  21.         scanf("%d",a+i);
  22.     }
  23.     sort(a,a+N);
  24.     for(int i=0;i<N;i++)
  25.     {
  26.         for(int j=0;j<N;j++)
  27.         {
  28.             if(i==j) continue;
  29.             dp[i][j]=2;
  30.         }
  31.     }
  32.     for(int i=0;i<N;i++)
  33.     {
  34.         l=0;
  35.         r=i-1;
  36.         while(l<r)
  37.         {
  38.             if(a[l]+a[r]==a[i])
  39.             {
  40.                 dp[l][i]=max(dp[l][i],short(dp[r][l]+1));
  41.                 dp[r][i]=max(dp[r][i],short(dp[l][r]+1));
  42.                 res=max(dp[l][i],res);
  43.                 res=max(dp[r][i],res);
  44.             }
  45.             if(a[l]+a[r]<a[i])
  46.                 l++;
  47.             else
  48.                 r--;
  49.         }
  50.     }
  51.     cout<<res<<endl;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment