Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema tiempo limite excedido optimizar

Estas en el tema de problema tiempo limite excedido optimizar en el foro de C/C++ en Foros del Web. hola , bueno quisiera solo me den ideas de como optimizar mas el codigo que hice ejem del problema input 5 8 3 4 3 ...
  #1 (permalink)  
Antiguo 06/10/2010, 11:48
 
Fecha de Ingreso: enero-2008
Ubicación: Oruro
Mensajes: 50
Antigüedad: 16 años, 10 meses
Puntos: 0
problema tiempo limite excedido optimizar

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^^.

Etiquetas: limite
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:49.