Cod sursa(job #2158941)

Utilizator CojocaruVicentiuCojocaru Vicentiu CojocaruVicentiu Data 10 martie 2018 17:20:20
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.23 kb
#include<fstream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int v[10010],t,i,n,j,q,k;
void Vb(int &q);
void Vc(int &q);

void Vb(int &q)
{
    if(q>0)
    {
        if(v[q]==2)
        {
            q++;
            Vb(q);
        }
        else
            if(v[q]==1 && v[q+2]==3)
            {
                q+=4;
                Vc(q);
            }
            else
                q=-1;
    }
}
void Vc(int &q)
{
    if(q>0)
    {
        if(v[q]==1 && v[q+1]==2)
            q+=3;
        else
            if(v[q]==2)
                q++;
            else
            {
                if(v[q]==3)
                {
                    q++;
                    Vb(q);
                    Vc(q);
                }
            }
    }
}
int main()
{
    fin>>t;
    for(i=1;i<=t;i++)
    {
        fin>>n;
        for(j=1;j<=n;j++)
            fin>>v[j];
        q=1;
        if(v[1]==1)
        {
            if(n==1)
                fout<<1<<"\n";
            else
            {
                Vb(q);
                if(q==n+1)
                    fout<<1<<"\n";
                else
                {
                    q=1;
                    Vc(q);
                    if(q==n+1)
                        fout<<1<<"\n";
                    else
                        fout<<0<<"\n";
                }
            }
        }
        else
            if(v[1]==2)
            {
                if(n==1)
                    fout<<1<<"\n";
                else
                {
                    Vb(q);
                    if(q==n+1)
                        fout<<1<<"\n";
                    else
                        fout<<0<<"\n";
                }
            }
            else
                if(v[1]==3)
                {
                    if(n==1)
                        fout<<1<<"\n";
                    else
                    {
                        Vc(q);
                        if(q==n+1)
                            fout<<1<<"\n";
                        else
                            fout<<0<<"\n";
                    }
                }
    }

    fin.close();
    fout.close();
    return 0;
}