ejem del problema
input
5
8 3 4 3 6
5
1 2 3 4 8
1 2 4 8 14
0
output
6
4
-1
se tiene que botar el mayor numero que se encuentre en el vector y que sea suma de 2 digitos del vector , y si no hay se bota -1.
---------------------------------------------------------
Código:
------------------------------------------------#include <iostream> #include <vector> #include <algorithm> using namespace std; typedef vector<long int>vec; bool comp(int a,vec b){ for(int i=b.size()-1;i>=0;i--){ if(a>b[i]) break; if(b[i]==a) return true; } return false; } int main(){ vec a,b,c; int n,dat,may; while(1){ cin>>n; a.clear(); if(n==0) break; for(int i=0;i<n;i++){ cin>>dat; a.push_back(dat); } sort(a.begin(),a.end()); b=a; unique(b.begin(),b.end()); c.clear(); for(int i=0;i<b.size();i++){ if(b[i]>=b[i+1]) break; c.push_back(b[i]); } bool h=false; int dat_max=c[c.size()-1]; for(int i=a.size()-1;i>0;i--){ if(h) break; for(int j=i-1;j>=0;j--){ if(a[i]+a[0]>dat_max) break; if(comp(a[i]+a[j],c)) {may=a[i]+a[j]; h=true; break; } } } if(h) cout<<may<<endl; else cout<<"-1"<<endl; } return 0; }
saludos^^.