Cod sursa(job #3331485)

Utilizator Mateixx1Trandafir Matei Mateixx1 Data 28 decembrie 2025 17:09:50
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int t,n,pt,v[10100],ok;
bool A();
bool B();
bool C();

bool A() {
    if(pt>n) {
        return 0;
    }
    if(v[pt]==1||v[pt]==2||v[pt]==3) {
        pt++;
        return 1;
    }
    return 0;
}

bool B() {
    if(pt>n) {
        return 0;
    }
    if(v[pt]==2) {
        pt++;
        return B();
    } else if(v[pt]==1) {
        pt++;
        bool ver=A();
        if(ver==0||v[pt]!=3) {
            return 0;
        }
        pt++;
        ver=A();
        if(ver==0) {
            return 0;
        }
        return C();
    }
    return 0;
}

bool C() {
    if(pt>n) {
        return 0;
    }
    if(v[pt]==1) {
        pt++;
        if(v[pt]!=2) {
            return 0;
        }
        pt++;
        return A();
    } else if(v[pt]==2) {
        pt++;
        return 1;
    } else {
        pt++;
        bool ver=B();
        if(ver==0) {
            return 0;
        }
        return C();
    }
}

int main() {
    f>>t;
    while(t--) {
        f>>n;
        for(int i=1; i<=n; i++) {
            f>>v[i];
        }
        ok=0;
        pt=1;
        if(A()&&pt==n+1) {
            ok=1;
        }
        pt=1;
        if(B()&&pt==n+1) {
            ok=1;
        }
        pt=1;
        if(C()&&pt==n+1) {
            ok=1;
        }
        g<<ok<<'\n';
    }
    f.close();
    g.close();
    return 0;
}