Cod sursa(job #2138958)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 21 februarie 2018 23:23:40
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.96 kb
#include <fstream>

using namespace std;

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

int T,n,v[10005],i;
int A(),B(),C();

int A()
{
    if (i == n+1)
        return 0;
    if (v[i] == 1 || v[i] == 2 || v[i] == 3)
    {
        i++;
        return 1;
    }
    else
        return 0;
}

int B()
{
    if (i == n+1)
        return 0;
    if (v[i] == 2)
    {
        i++;
        return B();
    }
    else
        if (v[i] == 1)
        {
            i++;
            int aux = A();
            if (aux == 0)
                return 0;
            if (v[i] != 3)
                return 0;
            i++;
            aux = A();
            if (aux == 0)
                return 0;
            return C();
        }
        else
            return 0;
}

int C()
{
    if (i == n+1)
        return 0;
    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
        {
            i++;
            int aux = B();
            if (aux == 0)
                return 0;
            return C();
        }
}

int main()
{
    fin >> T;
    for (;T--;)
    {
        fin >> n;
        for (i=1; i<=n; i++)
            fin >> v[i];
        i = 1;
        int rez = A();
        if (rez == 1 && i == n+1)
        {
            fout << 1 << "\n";
            continue;
        }
        i = 1;
        rez = B();
        if (rez == 1 && i == n+1)
        {
            fout << 1 << "\n";
            continue;
        }
        i = 1;
        rez = C();
        if (rez == 1 && i == n+1)
        {
            fout << 1 << "\n";
            continue;
        }
        fout << 0 << "\n";
    }
    return 0;
}