Cod sursa(job #2628147)

Utilizator As932Stanciu Andreea As932 Data 14 iunie 2020 16:38:20
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>

using namespace std;

ifstream cin("perle.in");
ofstream cout("perle.out");

const int nmax = 10005;

int q, n, idx;
int v[nmax];
bool ok;

void b();
void c();

void b()
{
    if(idx > n)
        return;
    if(v[idx] == 2)
    {
        ++idx;
        b();
    }
    else if(v[idx] == 1 && v[idx + 2] == 3 && idx + 2 < n)
    {
        idx += 4;
        c();
    }
    else
        ok = false;
}

void c()
{
    if(idx > n)
        return;
    if(v[idx] == 2)
        return;
    else if(v[idx] == 1 && v[idx + 1] == 2 && idx < n)
    {
        idx += 2;
        return;
    }
    else if(v[idx] == 3)
    {
        ++idx;
        b();
        ++idx;
        c();
    }
    else
        ok = false;
}

int main()
{
    cin >> q;

    while(q--)
    {
        cin >> n;

        for(int i = 1; i <= n; i++)
            cin >> v[i];

        if(n == 1)
        {
            cout << 1 << "\n";
            continue;
        }

        idx = 1;
        ok = true;

        if(v[idx] == 1)
        {
            if(n == 3)
                c();
            else
                b();
        }
        else if(v[idx] == 2)
            b();
        else
            c();

        if(idx != n)
            ok = false;

        cout << ok << "\n";
    }

    return 0;
}