Buongiorno, ho sottoposto una soluzione a easy3 ma mi dà 80/100 perchè sbaglia 4 test. La soluzione che ho incollato sotto non è quella ottimale, ma mi sembra giusta dal punto di vista concettuale (dato che non penso che l’esercizio, come si può dedurre anche dal nome, sia così complesso). Visto che quasi tutti i test sono corretti forse sto dimenticando qualcosa delle assunzioni o qualche caso limite.
Qualcuno magari riuscirebbe a trovare l’errore?
Grazie
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,i;
cin>>n;
vector<int> pari;
vector<int> dispari;
for(i=0;i<n;i++){
int temp;
cin>>temp;
if(temp%2==0)
pari.push_back(temp);
else
dispari.push_back(temp);
}
int d=dispari.size();
int p=pari.size();
int ans=-1;
if(p<2 && d<2)
ans=-1;
else if(p<2)
ans=dispari[d-1]+dispari[d-2];
else if(d<2)
ans=pari[p-1]+pari[p-2];
else{
sort(pari.begin(),pari.end());
sort(dispari.begin(),dispari.end());
ans=max(pari[p-1]+pari[p-2], dispari[d-1]+dispari[d-2]);
}
cout<<ans;
return 0;
}