Portale di allenamento delle Olimpiadi Italiane di Informatica
Topolino ha ricevuto in regalo un’altra sequenza di N numeri interi Si.
Vuole cercare, per ogni possibile coppia di numeri (in posizioni distinte) scelti dalla sequenza, la somma massima che sia anche pari.
Aiuta Topolino scrivendo un programma che, presi in ingresso N e la sequenza di interi Si, stampi in uscita la somma massima di una coppia tra le somme pari.
Se N fosse uguale a 10 e la sequenza ricevuta da Topolino fosse la seguente:
1 2 3 4 5 6 7 8 9 10 allora il tuo programma dovrebbe stampare 18 (ottenibile come 10+8).
Dati di input
Nel file input.txt sono presenti due righe di testo: nella prima c’è un singolo numero intero positivo N, nella seconda ci sono gli N interi Si, separati da spazio, che compongono la sequenza di Topolino.
Dati di output
Nel file output.txt dovrai stampare un singolo numero intero, la somma massima tra le somme pari delle coppie ricevute in input.
Se tale somma non dovesse esistere, allora dovrai stampare -1.Assunzioni
- 1 ≤ N ≤ 100000
- 0 ≤ Si < 1000000.
Esempi di input/output
input.txt output.txt 10
1 2 3 4 5 6 7 8 9 1018 2
13 1326
/* www.valcon.it Portale di allenamento delle Olimpiadi Italiane di Informatica Trova la somma pari massima v. 2 */ #include#include using namespace std; int main() { ifstream fin ( "input.txt"); ofstream fout("output.txt"); long N, S, pari1, pari2, disp1, disp2; pari1=pari2=disp1=disp2=-1; fin >> N; for(long i=1; i <= N; i++) { fin >> S; if(S%2 == 0) { if(S > pari1) { pari2=pari1; pari1=S; } else if(S > pari2) { pari2=S; } } else { if(S > disp1) { disp2=disp1; disp1=S; } else if(S > disp2) { disp2=S; } } } if(pari1 == -1 || pari2 == -1) pari1 = -1; else pari1 += pari2; if(disp1 == -1 || disp2 == -1) disp1 = -1; else disp1 += disp2; fout << max(pari1, disp1); return 0; }