Cod sursa(job #1992933)

Utilizator patcasrarespatcas rares danut patcasrares Data 21 iunie 2017 21:53:08
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.25 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int r=1,n,l,a[15][10005],pz;
void A(int x[10005],int &poz,int m);
void B(int x[10005],int &poz,int m);
void C(int x[10005],int &poz,int m);
void A(int x[10005],int &poz,int m)
{
    if(r==0)
        return;
    if(poz>m)
    {
       r=0;
       return;
    }
    poz++;
}
void B(int x[10005],int &poz,int m)
{
    if(r==0)
        return;
    if(poz>m)
    {
       r=0;
       return;
    }
    if(x[poz]==2)
    {
        poz++;
        B(x,poz,m);
        return;
    }
    if(x[poz]==3)
    {
       r=0;
       return;
    }
    if(x[poz]==1)
    {
        poz++;
        A(x,poz,m);
        if(r==0||poz>m)
        {
            r=0;
            return;
        }
        if(x[poz]!=3)
        {
            r=0;
            return;
        }
        poz++;
        A(x,poz,m);
        if(r==0||poz>m)
        {
            r=0;
            return;
        }
        C(x,poz,m);
    }
}
void C(int x[10005],int &poz,int m)
{
    if(r==0)
        return;
    if(poz>m)
    {
       r=0;
       return;
    }
    if(x[poz]==2)
    {
        poz++;
        return;
    }
    if(x[poz]==3)
    {
        poz++;
        B(x,poz,m);
        if(r==0||poz>m)
        {
            r=0;
            return;
        }
        C(x,poz,m);
        return;
    }
    if(x[poz]==1)
    {
        poz++;
        if(x[poz]!=2)
        {
            r=0;
            return;
        }
        poz++;
        A(x,poz,m);
    }
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>l;
        for(int j=1;j<=l;j++)
            fin>>a[i][j];
        r=1;
        pz=1;
        A(a[i],pz,l);
        if(r==1&&pz==l+1)
            fout<<1<<'\n';
        else
        {
            r=1;
            pz=1;
            B(a[i],pz,l);
            if(r==1&&pz==l+1)
                fout<<1<<'\n';
            else
            {
                r=1;
                pz=1;
                C(a[i],pz,l);
                if(r==1&&pz==l+1)
                    fout<<1<<'\n';
                else
                    fout<<0<<'\n';
            }
        }
    }

}