Cod sursa(job #3278845)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 20 februarie 2025 21:14:48
Problema Perle Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 12;

int q;
int n, p;
int v[NMAX+1];

int A(); int B(); int C();

int A()
{
    if(v[p] == 1 || v[p] == 2 || v[p] == 3)
        return 1;
    return 0;
}

int B()
{
    if(v[p] == 2)
    {
        p++;
        return B();
    }
    if(v[p] == 1)
    {
        p++;
        int ok1 = A();
        p++;
        int ok2 = v[p] == 3;
        p++;
        int ok3 = A();
        p++;
        int ok4 = C();
        return (ok1 && ok2 && ok3 && ok4);
    }
}

int C()
{
    if(v[p] == 2)return 1;
    if(v[p] == 3)
    {
        p++;
        int ok1 = B();
        p++;
        int ok2 = C();
        return (ok1 && ok2);
    }
    if(v[p] == 1)
    {
        p++;
        int ok1 = v[p] == 2;
        p++;
        int ok2 = A();
        return (ok1 && ok2);
    }
}

int main()
{
    fin >> q;
    while(q--)
    {
        int ok = 0;
        fin >> n;
        for(int i=1; i<=n; i++)
            fin >> v[i];
        p = 1;
        int ok1 = A() && p == n;
        p = 1;
        int ok2 = B() && p == n;
        p = 1;
        int ok3 = C()  && p == n;
        fout << (ok1 || ok2 || ok3) << '\n';
    }
    return 0;
}