Cod sursa(job #2702354)

Utilizator As932Stanciu Andreea As932 Data 3 februarie 2021 19:16:26
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>

using namespace std;

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

const int lmax = 1e4 + 1;

int l, idx, v[lmax];
bool ok;

void b();
void c();

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

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

void solve(){
    cin >> l;

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

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

    idx = 1;
    ok = true;

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

    if(idx != l)
        ok = false;

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

int main()
{
    int n;

    cin >> n;

    for(int i = 1; i <= n; i++)
        solve();

    return 0;
}