1 #include <iostream> 2 #include <string.h> 3 #include <string> 4 #include <fstream> 5 #include <algorithm> 6 #include <stdio.h> 7 #include <vector> 8 #include <queue> 9 #include <set> 10 #include <cmath> 11 using namespace std; 12 const double eps = 1e-8; 13 const int INF=0x7fffffff; 14 #define MAXN 1002 15 int s[MAXN]; 16 int main() 17 { 18 int n; 19 while(scanf("%d",&n),n!=0) 20 { 21 for(int i=0;i<n;i++) 22 scanf("%d",&s[i]); 23 sort(s,s+n); 24 bool found=false; 25 int ans=0,a,b,c,d; 26 for(d=n-1;d>=0;d--) 27 { 28 for(a=n-1;a>1;a--) 29 if(d!=a){ 30 ans=s[d]-s[a]; 31 for(b=0,c=a-1;b<c;) 32 { 33 if(s[b]+s[c]==ans){found=true;break;} 34 else if(s[b]+s[c]<ans)b++; 35 else c--; 36 } 37 if(found)break; 38 } 39 if(found)break; 40 } 41 if(found)printf("%d ",s[d]); 42 else printf("no solution "); 43 44 } 45 return 0; 46 }
拆分 d-a=b+c