Cod sursa(job #2152760)

Utilizator mirceaisherebina mircea mirceaishere Data 5 martie 2018 19:37:42
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.25 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;
        if(v[i]==1 && v[i+2]==3){
            int nr=b();
            if(i==m+1)
                fout<<1<<"\n";
            else
                fout<<0<<"\n";
        }else{
            if(v[i]==1){
                int nr=c();
            if(i==m+1)
                fout<<1<<"\n";
            else
                fout<<0<<"\n";

            }else{
                if(v[i]==2){
                    int nr=b();
                if(i==m+1)
                    fout<<1<<"\n";
                else
                    fout<<0<<"\n";
                }else{
                    if(v[i]==3){
                        int nr=c();
                    }
                    if(i==m+1)
                        fout<<1<<"\n";
                    else
                        fout<<0<<"\n";
                    }
            }
        }
        n--;
    }
}