Cod sursa(job #3139143)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 25 iunie 2023 16:57:55
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream cin("perle.in");
ofstream cout("perle.out");

int n,i,j,v[10005],m,x;

bool a();
bool b();
bool c();

bool a()
{
    if(i==n+1)
        return 0;
    else
        if(v[i]==1 || v[i]==2 ||  v[i]==3)
    {
        i++;
        return 1;

    }
    else
        return 0;
}

bool b()
{
    if(i==n+1)
        return 0;
    else
        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;
}

bool c()
{
    if(i==n+1)
        return 0;
    else
    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
            if(v[i]==3)
        {
            i++;
            if(b()==0)
                return 0;
            return c();


        }

}
int main()
{
    cin>>m;
    for(j=1;j<=m;j++)
    {
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>v[i];
            i=1;
            if(a()==1 &&i==n+1)
            {
                cout<<1<<'\n';
                continue;
            }
            i=1;
            if(b()==1 &&i==n+1)
            {
                cout<<1<<'\n';
                continue;
            }
            i=1;
            if(c()==1 &&i==n+1)
            {
                cout<<1<<'\n';

            }
            else
                cout<<0<<'\n';
    }

    return 0;
}