Cod sursa(job #2157263)

Utilizator alexjircanalex jircan alexjircan Data 9 martie 2018 14:10:44
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, i, j, l, v[10010];

int b(int x);
int c(int x);

int b(int x)
{
    if(x<=l)
    {
        if(v[x] == 2)
        {
            /// verific daca v[x+1] e b
            return b(x+1);
        }
        else if(v[x] == 1)
        {
            /// verific daca v[x+2] e 3
            /// verific daca v[x+4] e c
            if(v[x+2] == 3)
            {
                return c(x+4);
            }
        }
        else
        {
            return 0;
        }
    }
    else
    {
        /// false
        return 0;
    }
}
int c(int x)
{
    if(x<=l)
    {
        if(v[x] == 3)
        {
            ///verific daca v[x+1] e b
            ///verific daca v[x+2] e c
            return b(x+1) && c(x+2);
        }
        else if(v[x]==1)
        {
            ///verific daca v[x+1] e 2
            ///true
            if(v[x+1] == 2)
            {
                return 1;
            }
        }
        else
        {
            /// false
            return 0;
        }
    }
    else
    {
        return 0;
    }
}

int main()
{
    fin >> n;
    for(i=1; i<=n; i++)
    {
        fin >> l;
        for(j=1; j<=l; j++)
        {
            fin >> v[j];
        }
        if(l == 1)
        {
            fout << 1;
        }
        else if(b(1) == 1 || c(1) == 1)
        {
            fout << 1 << '\n';
        }
        else
        {
            fout << 0 << '\n';
        }

    }
    return 0;
}