Cod sursa(job #2928174)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 22 octombrie 2022 12:31:57
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.94 kb
#include <fstream>
using namespace std;

ifstream fin("perle.in");
ofstream fout("perle.out");

int n, t, i, v[10010];

bool A();
bool B();
bool C();

bool A(){
    if ( i == n + 1 )
        return false;
    if ( v[i] == 1 || v[i] == 2 || v[i] == 3 ){
        i++;
        return true;
    }else{
        return false;
    }
}

bool B(){
    if ( i == n + 1 )
        return false;
    if ( v[i] == 2 ){
        i++;
        return B();
    }else{
        if ( v[i] == 1 ){
            i++;
            bool aux = A();
            if ( aux == false )
                return false;
            if ( v[i] != 3 )
                return false;
            i++;
            aux = A();
            if ( aux == false )
                return false;
            return C();

        }
    }
    return false;
}

bool C(){
    if ( i == n+1 )
        return false;
    if ( v[i] == 2 ){
        i++;
        return true;
    }else{
        if ( v[i] == 3 ){
            i++;
            bool aux = B();
            if ( aux == false )
                return false;
            return C();
        }else{
            if ( v[i] == 1 && v[i + 1] == 2 && i + 1 <= n ){
                i = i + 2;
                return A();
            }
        }

    }
    return false;
}

int main(){
    fin >> t;
    for (int i1 = 1; i1 <= t; i1++ ){
        fin >> n;
        for (int j = 1; j <= n; j++)
            fin >> v[j];
        i = 1;
        bool ans = A();
        if ( ans == true && i == n + 1 ){
            fout << 1 << "\n";
            continue;
        }
        i = 1;
        ans = B();
        if ( ans == true && i == n + 1 ){
            fout << 1 << "\n";
            continue;
        }
        i = 1;
        ans = C();
        if ( ans == true && i == n + 1 ){
            fout << 1 << "\n";
            continue;
        }
        fout << 0 << "\n";

    }

    return 0;
}