Cod sursa(job #2500989)

Utilizator AndreeaGherghescuAndreea Gherghescu AndreeaGherghescu Data 28 noiembrie 2019 21:55:38
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.76 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[10004],n,ind;
void A()
{
    ind++;
}
int B();
int C()
{
    if (v[ind]==2)
    {
        ind++;
        return 1;
    }
    if (v[ind]==3)
    {
        ind++;
        if (ind>n) return 0;
        if (B())
        {
            //ind++;
            //if (ind>n) return 0;
            if (C())
                return 1;
            return 0;
        }
        return 0;
    }
    if (v[ind]==1)
    {
        ind++;
        if (ind>n) return 0;
        if (v[ind]==2)
        {
            ind++;
            if (ind>n) return 0;
            A();
            return 1;
        }
    }
    return 0;
}
int B ()
{
    if (v[ind]==2)
    {
        ind++;
        if (ind>n)
            return 0;
        if (B())
            return 1;
    }
    if (v[ind]==1)
    {
        ind++;
        if (ind>n) return 0;
        A();
        if (ind>n) return 0;
        if (v[ind]==3)
        {
            ind++;
            if (ind>n) return 0;
            A();
            if (ind>n) return 0;
            if (C())
                return 1;
            return 0;
        }
    }
    return 0;
}
int main()
{
    int m;
    in>>m;
    for (int j=1;j<=m;j++)
    {
        in>>n;
        for (int i=1;i<=n;i++)
            in>>v[i];
        if (n==1)
        {
            out<<1<<'\n';
            continue;
        }
        ind=1;
        if (B() && ind==n+1)
        {
            out<<1<<'\n';
            continue;
        }
        ind=1;
        if (C() && ind==n+1)
        {
            out<<1<<'\n';
            continue;
        }
        out<<0<<'\n';
    }
    return 0;
}