Cod sursa(job #3196940)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 24 ianuarie 2024 23:11:22
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
using namespace std;
ifstream cin("perle.in");
ofstream cout("perle.out");
int i,n,t,A(),B(),C(),v[10001];
/// A - 1, 2, 3    B - 2B, 1A3AC    C - 2, 3BC, 12A
int A(){
    if(i==n+1)
        return 0;
    else if(v[i]==1||v[i]==2||v[i]==3){
        i++;
        return 1;
    }else
        return 0;
}
int B(){
    if(i==n+1)
        return 0;
    else if(v[i]==2){
        i++;
        return B();
    }else if(v[i]==1){
        i++;
        int ok=A();
        if(ok==0)
            return 0;
        if(v[i]!=3)
            return 0;
        i++;
        ok=A();
        if(ok==0)
            return 0;
        return C();
    }
}
int C(){
    if(i==n+1)
        return 0;
    else if(v[i]==2){
        i++;
        return 1;
    }else if(v[i]==3){
        i++;
        int ok=B();
        if(ok==0)
            return 0;
        return C();
    }else if(v[i]==1){
        i++;
        if(v[i]!=2)
            return 0;
        i++;
        return A();
    }
}
int main()
{
    cin>>t;
    while(t--){
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>v[i];
        i=1;
        if(A()==1&&i==n+1){
            cout<<"1\n";
            continue;
        }
        i=1;
        if(B()==1&&i==n+1){
            cout<<"1\n";
            continue;
        }
        i=1;
        if(C()==1&&i==n+1){
            cout<<"1\n";
            continue;
        }
        cout<<"0\n";
    }
    return 0;
}