Domanda su easy3 - 80/100

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;
}

Dimenticato di fare il sort per i casi p<2 e d<2?

Se c’è 1 elemento o addirittura 0 non c’è molto da ordinare hahaha

Se c’è un solo elemento ( o zero elementi) fra i pari la soluzione va giustamente cercata fra i dispari che però secondo me andrebbero ordinati prima di prendere gli ultimi 2!!
Discorso analogo c’è un solo elemento ( o zero elementi) fra i dispari…

P.S. Guarda che se ce li metti fai 100/100

Ah oddio scusami, avevo proprio frainteso! Grazie mille, poi provo a fare come mi hai detto ma penso proprio che sia lì l’errore