Cod sursa(job #2702349)

Utilizator As932Stanciu Andreea As932 Data 3 februarie 2021 19:01:09
Problema Perle Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>

using namespace std;

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

const int lmax = 1e4 + 1;

int l, v[lmax];
bool ok;

void b(int idx);
void c(int idx);

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

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

void solve(){
    cin >> l;

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

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

    ok = false;

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

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

int main()
{
    int n;

    cin >> n;

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

    return 0;
}