Cod sursa(job #1552421)

Utilizator mariusn01Marius Nicoli mariusn01 Data 17 decembrie 2015 22:48:07
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <fstream>

using namespace std;

int L[10010], n, T, i, r;

int A(), B(), C();

int A() {
    if (i>n)
        return 0;
    i++;
    return 1;
}

int B() {
    if (i > n) {
        return 0;
    }
    if (L[i] == 3) {
        i++;
        return 0;
    }

    if (L[i] == 2) {
        i++;
        return B();
    }

    if (L[i] == 1 && L[i+2] == 3) {
        i++;
        if (!A())
            return 0;
        i++;
        if (!A())
            return 0;
        if (!C())
            return 0;
        return 1;
    } else
        return 0;
}

int C() {
    if (i > n)
        return 0;
    if (L[i] == 2) {
        i++;
        return 1;

    }
    if (L[i] == 1) {
        if (L[i+1] == 2) {
            i+=2;
            return A();
        } else
            return 0;
    }
    if (L[i] == 3) {
        i++;
        if (!B())
            return 0;
        if (!C())
            return 0;
        return 1;
    }

}

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

int main () {
    fin>>T;
    for (;T--;) {
        fin>>n;
        for (i=1;i<=n;i++)
            fin>>L[i];

        i = 1;
        r = A();
        if (i > n && r) {
            fout<<1<<"\n";
            continue;
        }

        i=1;
        r = B();
        if (i > n && r) {
            fout<<1<<"\n";
            continue;
        }
        i=1;
        r = C();
        if (i > n && r) {
            fout<<1<<"\n";
            continue;
        }
        fout<<0<<"\n";
    }
    return 0;
}