poj 2549 Sumsets

 

Sumsets
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 6261   Accepted: 1745

Description

poj 2549 Sumsets_第1张图片Given S, a set of integers, find the largest d such that a + b + c = d where a, b, c, and d are distinct elements of S.

Input

Several S, each consisting of a line containing an integer 1 <= n <= 1000 indicating the number of elements in S, followed by the elements of S, one per line. Each element of S is a distinct integer between -536870912 and +536870911 inclusive. The last line of input contains 0.

Output

For each S, a single line containing d, or a single line containing "no solution".

Sample Input

5
2 
3 
5 
7 
12
5
2 
16 
64 
256 
1024
0

Sample Output

12
no solution

Source

Waterloo local 2001.06.02
#include<stdio.h> #include<algorithm> using namespace std; int main(int argc, char* argv[]) { bool flag; long n,i,j,l,r,t,a[1000]; while(scanf("%d",&n),n) { for(i=0;i<n;i++) scanf("%d",a+i); sort(a,a+n); flag=false; for(i=n-1;i>=0;i--) { for(j=n-1;j>1;j--) if(i!=j) { t=a[i]-a[j]; for(l=0,r=j-1;l<r;) { if(a[l]+a[r]==t) { flag=true; break; } if(a[l]+a[r]>t) r--; else l++; } if(flag) break; } if(flag) break; } if(flag) printf("%d/n",a[i]); else printf("no solution/n"); } return 0; }  

 

你可能感兴趣的:(c,Integer,ini,input,each,output)