Cod sursa(job #2928138)

Utilizator AlexTimplaruAlexandru Timplaru AlexTimplaru Data 22 octombrie 2022 11:34:55
Problema Perle Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
// https://www.infoarena.ro/problema/perle
#include <fstream>

using namespace std;

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

short v[10010];
int p = 0;

bool B();
bool C();

bool B()
{
    if(v[p] == 2)
    {
        p++;
        return B();
    }
    else if (v[p] == 1 && v[p+2] == 3 && v[p+4] != 0)
    {
        p += 4;
        return C();
    }
    else return false;
}

bool C()
{
    if(v[p] == 1 && v[p+1] == 2 && v[p+2] != 0)
    {
       return true;
    }
    else if (v[p] == 3)
    {
        p++;
        bool v = B();
        p++;
        v = v && C();
        if(v) return true;
    }
    else if(v[p] == 2)
    {
        return true;
    }
    else return false;
}


int main()
{
    int n;
    fin >> n;
    for(int i = 0; i < n; i++)
    {
        int x;
        fin >> x;
        for(int j = 0; j < x; j++)
        {
            fin >> v[j];
        }
        if(x == 1) fout << 1;
        else if(v[p] == 2 || (v[p] == 1 && v[p+2] == 3 && v[p+4] != 0))
        {
            fout << B() << "\n";
        }
        else if(v[p] == 3 || (v[p] == 1 && v[p] ==2 && v[p+2] != 0))
        {
            fout << C() << "\n";
        }
        else fout << 0 << "\n";
    }
}