Cod sursa(job #2533450)

Utilizator qThunderStefan Durlanescu qThunder Data 29 ianuarie 2020 01:05:23
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int p,v[10004],n,i;
int A();
int B();
int C();
int A()
{
    if(i==n+1)
        return 0;
    if(v[i]==1 || v[i]==2 || v[i]==3)
    {
        i++;
        return 1;
    }
    else return 0;
}
int B()
{
    if(i==n+1)
        return 0;
    if(v[i]==2)
    {
        i++;
        return B();
    }
    else
        if(v[i]==1)
        {
            i++;
            int k=A();
            if(k==0)
                return 0;
            if(v[i]!=3)
                return 0;
            i++;
            k=A();
            if(k==0)
                return 0;
            return C();
        }
        else return 0;
}
int C()
{
    if(i==n+1)
        return 0;
    if(v[i]==2)
    {
        i++;
        return 1;
    }
    else
        if(v[i]==1)
        {
            i++;
            if(v[i]!=2)
            {
                i++;
                return 0;
            }
            else
            {
                i++;
                return A();
            }
        }
        else
        {
            i++;
            int k=B();
            if(k==0)
                return 0;
            return C();
        }
}
int main()
{
    fin>>p;
    for(int i1=1;i1<=p;i1++)
    {
        fin>>n;
        for(int i=1;i<=n;i++)
            fin>>v[i];
        i=1;
        int r=A();
        if(r==1 && i==n+1)
        {
            fout<<1<<"\n";
            continue;
        }
        i=1;
        r=B();
        if(r==1 && i==n+1)
        {
            fout<<1<<"\n";
            continue;
        }
        i=1;
        r=C();
        if(r==1 && i==n+1)
        {
            fout<<1<<"\n";
            continue;
        }
        fout<<0<<"\n";
    }
    return 0;
}