Cod sursa(job #3148273)

Utilizator ElizaTElla Rose ElizaT Data 30 august 2023 16:12:25
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1e4 + 5;
int v[NMAX],n,poz;

bool solveC();
bool solveA() {
    if (poz >= n)
        return 0;
    poz++;
    return 1;
}
bool solveB() {
    if (poz >= n)
        return 0;
    if (v[poz] == 3) {
        poz++;
        return 0;
    }
    if (v[poz] == 2) {
        poz++;
        return solveB();
    }
    if (v[poz + 2] == 3) {
        poz++;
        if (!solveA())
            return 0;
        poz++;
        return solveA() && solveC();
    }
    return 0;
}
bool solveC() {
    if (poz >= n)
        return 0;
    if (v[poz] == 2) {
        poz++;
        return 1;
    }
    if (v[poz] == 1) {
        if (v[poz + 1] == 2) {
            poz += 2;
            return solveA();
        }
        return 0;
    }
    poz++;
    return solveB() && solveC();
}
int main() 
{
    ifstream fin("perle.in");
    ofstream fout("perle.out");
    int t;
    fin >> t;
    while (t--) {
        fin >> n;
        for (int i = 0;i < n;i++)
            fin >> v[i];
        poz = 0;
        if (solveA() && poz >= n) {
            fout << "1\n";
            continue;
        }
        poz = 0;
        if (solveB() && poz >= n) {
            fout << "1\n";
            continue;
        }
        poz = 0;
         if (solveC() && poz >= n) {
            fout << "1\n";
            continue;
        }
        fout << "0\n";
    }
    return 0;
}