Cod sursa(job #2157274)

Utilizator alexjircanalex jircan alexjircan Data 9 martie 2018 14:32:08
Problema Perle Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

void b(int &x);
void c(int &x);

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

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

    }
    return 0;
}