Cod sursa(job #1011144)

Utilizator sebinechitasebi nechita sebinechita Data 16 octombrie 2013 11:58:00
Problema Perle Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;

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


int ind, n, i, ki;

int a();
int b();
int c();

int au[100];

int eval()
{
    if(n==1)
        return a();
    if(au[ind]==2)
        return b();
    if(au[ind]==1 && au[ind+2]==3 && n>=5)
        return b();
    return c();
}

int a()
{

    if(ind>n)
        return 0;
    ind++;
    return 1;
}

int b()
{

    if(au[ind]==2)
    {
        ind++;
        return b();
    }
    if(au[ind]==1)
    {
        ind++;
        if(a())
        {
            if(ind<=n)
                if(au[ind]==3)
                {
                    ind++;
                    if(a() && ind<=n)
                        return c();
                }
        }
    }
    return 0;
}

int c()
{
    if(au[ind]==2)
    {ind++;
        return 1;}
    if(au[ind]==3)
    {
        ind++;
        if(b())
        {
            ind++;
            return c();
        }
    }
    if(au[ind]==1)
    {
        ind++;
        if(au[ind]==2)
        {
            ind++;
            return a();
        }
    }
    return 0;
}


int main()
{
    int t;
    fin>>t;

    for(ki=1;ki<=t;ki++)
    {
        fin>>n;
        for(i=1;i<=n;i++)
        {
            fin>>au[i];
        }
        ind=1;
        fout<<eval()<<"\n";
    }

    return 0;
}