Cod sursa(job #3196941)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 24 ianuarie 2024 23:12:48
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 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;
    if(v[i]==1||v[i]==2||v[i]==3){
        i++;
        return 1;
    }
    return 0;
}
int B(){
    if(i==n+1)
        return 0;
    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){
            i++;
            ok=A();
            if(ok)
                return C();
            return 0;
        }
    }
    return 0;
}
int C(){
    if(i==n+1)
        return 0;
    if(v[i]==2){
        i++;
        return 1;
    }
    if(v[i]==3){
        i++;
        int ok=B();
        if(ok)
            return C();
        return 0;
    }
    if(v[i]==1){
        i++;
        if(v[i]==2){
            i++;
            return A();
        }
    }
    return 0;
}
int main()
{
    cin>>t;
    while(t--){
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>v[i];
        i=1;
        bool ok=0;
        if(A()==1&&i==n+1)
            ok=1;
        i=1;
        if(B()==1&&i==n+1)
            ok=1;
        i=1;
        if(C()==1&&i==n+1)
            ok=1;
        cout<<ok<<'\n';
    }
    return 0;
}