hola , bueno quisiera solo me den ideas de como optimizar mas el codigo que hice
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^^.