Tutti i task completati ma punteggio non pieno (easy3)

#include <fstream>
#include <vector>
#include <algorithm>


using namespace std;

 main(){
	
    int n,temp=0,max=-1;
    vector <int> vet;	
    ifstream in("input.txt");
    ofstream out("output.txt");
    in>>n;
    for(int i=0;i<n;i++){
        in>>temp;
        vet.push_back(temp);
    }
    sort(vet.begin(),vet.end(),greater<int>());
    
    for(int i=0;i<n-1;i++){
        for(int j=i+1;j<n;j++){
            temp=vet[i]+vet[j];
            if(temp%2==0 && temp>max){
                max=temp;
                break;
            }
        }
    }
    out<<max;
}

Il tuo algoritmo è troppo lento per risolvere l’ esercizio nel tempo richiesto.
Devi riuscire a risolverlo in meno di un secondo.
In questo momento la complessità del tuo algoritmo è N log(N) + N ^ 2 data dal ordinamento più quei due cicli for.
Quando N assume valori di 10^5 devi trovare una soluzione lineare O(N) o N log(N).
Se hai già ordinato i valori, devi necessariamente provare ogni combinazione ?

Ciao Jack, ho tolto un ciclo for e modificato un pò il programma, adesso mi da 100!! Grazie mille per l’aiuto.

1 Mi Piace