Cod sursa(job #2701417)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 31 ianuarie 2021 00:31:14
Problema Perle Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("perle.in");
ofstream fout("perle.out");

const int LMax = 1e5;

int n, l;
int v[LMax + 5];

void Read(){
    fin >> l;
    for (int i = 1; i <= l; i++)
        fin >> v[i];
}

int B(int ind);
int C(int ind);

int B(int ind){
    if (ind > l)
        return 0;
    if (v[ind] == 2)
        return B(ind + 1);
    if (v[ind] == 1 && v[ind + 2] == 3)
        return C(ind + 4);
    return 0;
}

int C(int ind){
    if (ind > l)
        return 0;
    if (v[ind] == 2)
        return ind;
    if (v[ind] == 1 && v[ind + 1] == 2 && ind + 2 <= l)
        return ind + 2;
    if (v[ind] == 3)
        return C(B(ind + 1));
    return 0;
}

int Verify(){
    if (l == 1)
        return 1;
    if (B(1) == l || C(1) == l)
        return 1;
    return 0;
}

int main(){
    fin >> n;
    for (int i = 1; i <= n; i++){
        Read();
        if (Verify())
            fout << 1 << '\n';
        else
            fout << 0 << '\n';
    }
    return 0;
}