Cod sursa(job #2152783)

Utilizator mirceaisherebina mircea mirceaishere Data 5 martie 2018 19:49:11
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include <fstream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");

int i, j, n, m, nr, aux;

int v[10001];

int a();
int b();
int c();

int a(){
    if(i==n+1){
        return 0;
    }
    if(v[i]){
        i++;
        return 1;
    }else{
        return 0;
    }
}

int b(){
    if(i==n+1){
        return 0;
    }
    if(v[i]==1){
        i++;
        int nr=a();
        if(nr==0)
            return 0;
        if(v[i]!=3){
            return 0;
        }
        i++;
        nr=a();
        if(nr==0){
            return 0;
        }
        return c();
    }else{
        if(v[i]==2){
            i++;
            return b();
        }else{
            if(v[i]==3){
                return 0;
            }
        }
    }
}

int c(){
    if(i==n+1){
        return 0;
    }
    if(v[i]==1){
        i++;
        if(v[i]!=2)
            return 0;
        i++;
        return a();
    }else{
        if(v[i]==2){
            i++;
            return 1;
        }else{
            if(v[i]==3){
                i++;
                aux=b();
                if(b==0){
                    return 0;
                }
                return c();
            }
        }
    }
}

int main(){
    fin>>n;
    while(n){
        fin>>m;
        for(j=1; j<=m; j++){
            fin>>v[j];
        }
        i = 1;
        int rez = a();
        if (rez == 1 && i == n+1) {
            fout<<1<<"\n";
        }else{
            i = 1;
            rez = b();
            if (rez == 1 && i == n+1) {
                fout<<1<<"\n";
            }else{
                i = 1;
                rez = c();
                if (rez == 1 && i == n+1) {
                    fout<<1<<"\n";
                }else{
                fout<<0<<"\n";
                }
            }
        }
        n--;
    }
    return 0;
}