Cod sursa(job #2152386)

Utilizator maria15Maria Dinca maria15 Data 5 martie 2018 14:50:35
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>

using namespace std;

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

int n, i, m, v[10002];
char ok = 1;

void checkB(), checkB1(), checkC(), checkB2();

void checkC(){

    if(v[i] == 3){
        checkB();
        if(ok != 0){
            i++;
            checkC();

        }
    }
    else
        if(v[i] == 1){
            if(!(v[i+1] == 2 && i+2<=n))
                ok = 0;
        }
}

void checkB1(){
    if(v[i] != 2){
        ok = 0;
        return;
    }
    while(v[i] == 2)
        i++;
    if(i > n-5)
        ok = 0;
    else
        checkB2();
}

void checkB2(){
    if(v[i] == 1 && v[i+2] == 3 && i+4 <= n){
        i+=4;
        checkC();
    }
    else
        ok = 0;
}

void checkB(){
    checkB1();
    if(ok == 0){
        ok = 1;
        checkB2();
    }
}

int main(){
    fin>>m;
    while(m){
        fin>>n;
        for(i=1;i<=n;i++)
            fin>>v[i];
        if(n == 1)
            fout<<"1\n";
        else{           /// inseamna ca nu pornesc de la A
            i = 1;
            checkB();
            if(ok == 0)
                ok = 1, checkC();
            if(ok == 0)
                fout<<"0\n";
            else
                fout<<"1\n";
        }
        m--;
    }

    return 0;
}