Cod sursa(job #2533409)

Utilizator BogauuuBogdan Ivancu Bogauuu Data 28 ianuarie 2020 23:25:10
Problema Perle Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <fstream>

using namespace std;

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

int A(), B(), C();

int i,n,q,t,v[10005];

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

    return 0;
}

int A()
{
    if (i==n+1) return 0;
    if (v[i]>=1 && 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++;
            if (A()==0) return 0;
            if (v[i]!=3) return 0;
            i++;
            if (A()==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]==3)
        {
            i++;
            if (B()==0) return 0;
            return C();
        }
        else
        {
            if (v[i]==1)
            {
                i++;
                if (v[i]!=2)
                {
                    i++;
                    return 0;
                }
                else
                {
                    i++;
                    return A();
                }
            }
            else return 0;
        }
    }
}