Cod sursa(job #3331969)

Utilizator StefanRaresStefan Rares StefanRares Data 2 ianuarie 2026 12:35:07
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("perle.in");
ofstream g("perle.out");

int n, v[10005], k, T;
bool ok;

bool A();
bool B();
bool C();

bool A()
{
    if(k > n)
        return 0;
    ++k;
    return 1;
}
bool B()
{
    if(k > n || v[k] == 3)
        return 0;
    if(v[k] == 2)
    {
        ++k;
        return B();
    }
    else if(v[k] == 1)
    {
        ++k;
        if(!A() || v[k] != 3)
            return 0;
        ++k;
        if(!A())
            return 0;
        return C();
    }
    return 0;
}
bool C()
{
    if(k > n)
        return 0;
    if(v[k] == 1)
    {
        ++k;
        if(v[k] != 2)
            return 0;
        ++k;
        return A();
    }
    else if(v[k] == 2)
    {
        ++k;
        return 1;
    }
    else
    {
        ++k;
        if(!B())
            return 0;
        return C();
    }
}

int main()
{
    f >> T;
    while(T--)
    {
        f >> n;
        for(int i = 1; i <= n; i++)
            f >> v[i];
        k = 1, ok = 0;
        if(A() && k == n + 1)
            ok = 1;
        k = 1;
        if(B() && k == n + 1)
            ok = 1;
        k = 1;
        if(C() && k == n + 1)
            ok = 1;
        g << ok << '\n';
    }
    f.close();
    g.close();
    return 0;
}