Piroette 40/100

Ciao a tutti, ho provato a risolvere il problema “Piroette” ma non super 4 Testcase 14, 18, 21, 28, ( Output isn’t correct)
Questo è il codice:

#include <bits/stdc++.h>
using namespace std;

int N, mini = 10, pos = 0, i;

int main() {
    ifstream cin("input.txt");
    ofstream cout("output.txt");
    
    cin >> N;
    vector<int>cifre(N);
    
    for(; i < N; ++i){
        cin >> cifre[i];
        if(cifre[i] < mini && (cifre[i] % 2 == 0) && cifre[i] > 0){
            pos = i;
            mini = cifre[i];
        }
    }
    
    
    cifre[pos] = 0;
    sort(cifre.begin(), cifre.end());
    
    for(i = 0; i < N; ++i){
        if(cifre[i] > 0){
            cifre[i - 1] = mini;
            break;
        }
    }

    for(i = N - 1; i >= 0; --i){
        cout << cifre[i] << " ";
    }
    
    
  return 0;
}

Ciao, cosa succede se nell’input ci sono due zeri?
tipo:
4
0 1 8 0

Come output risulta 1 8 0 0, ma è sbagliato.

Il mio codice trova il numero pari più piccolo maggiore di 0, escludendo 0.
Se nelle cifre sono presenti 2 o più zeri allora il numero più piccolo pari è 0, infatti l’ output giusto è 8 1 0 0.
Grazie dell’ aiuto!