Problema UEFA Champions Leafue

Qualcuno mi potrebbe aiutare per la risoluzione del problema con questo codice mi esce solo una task
#include
using namespace std;
int main()
{
//freopen(“input.txt”,“r”,stdin);
int casi;
cin>>casi;
for(int h=0;h<casi;h++)
{
if(h>0)
cout<<endl;
int N;
cin>>N;
int squadre[N][4];
for(int i=0;i<N;i++)
{
int x;
cin>>x;
squadre[i][2]=x%10;
x/=10;
squadre[i][1]=x%10;
x/=10;
squadre[i][0]=x;
squadre[i][3]=squadre[i][0]*3+squadre[i][2];
}
bool valido = true;
for (int i=1;i<N;i++)
{
if (squadre[i][3]>squadre[i-1][3])
{
valido = false;
break;
}
if (squadre[i][3]==squadre[i-1][3]&&squadre[i][0]>squadre[i - 1][0])
{
valido = false;
break;
}
}
int somma=0;
for(int i=0;i<N;i++)
{

        somma=somma+squadre[i][0]+squadre[i][1]+squadre[i][2];
    }
    if(somma!=N*(N-1)*2)
        valido=false;
    if (valido==false)
    {
        cout << "Invalid";
        continue;
    }
    bool unico = true;
    if(valido==true)
    {
        int partite = N * (N - 1)/2;
        int temp[partite][5];

        int idx = 0;
        for (int i = 0; i < N; i++)
        {
            for (int j = i + 1; j < N; j++)
            {
                temp[idx][0] = i + 1; // Squadra 1
                temp[idx][1] = j + 1; // Squadra 2
                temp[idx][2] = 0; // Vittorie Squadra 1
                temp[idx][3] = 0; // Pareggi
                temp[idx][4] = 0; // Vittorie Squadra 2
                idx++;
            }
        }
        for(int i=0;i<partite;i++)
        {
            int sq1, sq2;
            sq1 = temp[i][0];
            sq2 = temp[i][1];
            int v1, v2, p1, p2;
            v1 = squadre[sq1-1][0];
            v2 = squadre[sq2-1][0];
            p1 = squadre[sq1-1][1];
            p2 = squadre[sq2-1][1];
            for(int p=0;p<2;p++)
            {
                if (v1 > v2) {
                    temp[i][2]++; // Vittoria per Squadra 1
                    squadre[sq1-1][0]--; // Decrementa vittorie disponibili di Squadra 1
                    v1--;
                }
                else if (v2 > v1) {
                    temp[i][4]++; // Vittoria per Squadra 2
                    squadre[sq2-1][0]--; // Decrementa vittorie disponibili di Squadra 2
                    v2--;
                }
                else if (p1>0&&p2>0)
                {
                    temp[i][3]++; // Pareggio
                    squadre[sq1-1][1]--; // Decrementa pareggi disponibili di Squadra 1
                    squadre[sq2-1][1]--; // Decrementa pareggi disponibili di Squadra 2
                    p1--;
                    p2--;
                }
                else
                {
                    temp[i][2]++; // Vittoria per Squadra 1 arbitrario
                    squadre[sq1-1][0]--; // Decrementa vittorie disponibili di Squadra 1
                    v1--;
                }
            }
        }
            unico=true;
            for(int i=0;i<partite;i++)
            {
                if(temp[i][2]==1||temp[i][3]==1||temp[i][4]==1)
                    unico=false;
            }


    if(unico==true)
        cout<<"Unique";
    else
        cout<<"Not unique";
    }
}
return 0;

6
2
200
002
2
110
011
2
011
110
2
020
020
2
002
200
2
110
110
Il tuo programma svolge correttamente tutti i gruppi tranne l’ultimo e probabilmente il problema è proprio quello.
Anche qualche indice di squadre non è del tutto corretto perché sbaglia anche il seguente task:
1
3
220
121
103

ok grazie