Cod sursa(job #2702344)

Utilizator As932Stanciu Andreea As932 Data 3 februarie 2021 18:44:27
Problema Perle Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 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 rec(int idx, int p){
    if(p == 2){
        if(v[idx] == 2)
            rec(++idx, 2);
        else if(v[idx] == 1 && v[idx + 2] == 3 && idx + 4 < l)
            rec(idx + 4, 3);
        else if(v[idx] == 1 && v[idx + 2] == 3 && v[idx + 4] == 2 && idx + 4 == l)
            ok = true;
    } else {
        if(v[idx] == 3){
            rec(++idx, 2);
            rec(idx, 3);
        } else if(v[idx] == 1 && v[idx + 1] == 2 && idx + 2 == l)
            ok = true;
        else if(idx == l && v[idx] == 2)
            ok = true;
    }
}

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)
        rec(1, 2);
    else if(v[1] == 3)
        rec(1, 3);
    else if(l == 3)
        rec(1, 3);
    else
        rec(1, 2);

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

int main()
{
    int n;

    cin >> n;

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

    return 0;
}