Cod sursa(job #1207185)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 12 iulie 2014 14:41:28
Problema Perle Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#define NMax 1011
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int n, v[NMax], l, i, ind, ok;
void C();
void B()
{
    if (ok==1)
        return;
    if (ind>l) {
        ok=0;
        return;
    }
        
    if (v[ind]==2 && (v[ind+1]==2 || v[ind+1]==1)) {
        ++ind;
        B();
    }
    else if (v[ind]==1 && v[ind+2]==3) {
        ind+=4;
        C();
    }
}
void C()
{
    if (ok==1)
        return;
    if (ind>l) {
        ok=0;
        return;
    }
    if (v[ind]==2 && ind==l) {
        ++ind;
        ok=1;
        return;
    }
    else if (v[ind]==3 && (v[ind+1]==2 || v[ind+1]==1)) {
        ++ind;
        B();
        ++ind;
        C();
    }
    else if(v[ind]==1 && v[ind+1]==2) {
        ind+=2;
        if (ind==l) {
            ok=1;
            return;
        }
    }
}
int main()
{
    f>>n;
    for (; n--; ) {
        f>>l;
        for (i=1; i<=l; i++)
            f>>v[i];
        ind=1;
        ok=0;
        if (l==1)
            g<<1<<"\n";
        else {
            B();
            if (ind >= l)
                g<<ok<<"\n";
            else
                g<<0<<"\n";
        }
    }
    return 0;
}