Cod sursa(job #1366228)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 28 februarie 2015 21:08:22
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
#define MAXL 10005
FILE *f=fopen("perle.in","r"), *g=fopen("perle.out","w");

long int T, t, L, v[MAXL];

long int B(long int ind);
long int C(long int ind);

bool Rezolvare(){

    if( L    == 1 ) return 1;
    if( B(1) == L ) return 1;
    if( C(1) == L ) return 1;
    return 0;
}

int main(){

    fscanf(f,"%ld\n",&T);
    for(t=1;t<=T;t++){
        fscanf(f,"%ld",&L);
        for(long int i=1;i<=L;i++) fscanf(f,"%ld",&v[i]);
        fprintf(g,"%ld\n",Rezolvare());
    }

return 0;
}

long int B(long int ind){

    if( ind > L ) return 0;

    if( v[ind] == 2 ) return B(ind+1);
    if( v[ind] == 1 && v[ind+2] == 3 ) return C(ind+4);

    return 0;
}

long int C(long int ind){

    if( ind > L ) return 0;

    if( v[ind] == 2 ) return ind;
    if( v[ind] == 1 && v[ind+1] == 2 ) return ind+2;
    if( v[ind] == 3 ){
        ind = B(ind+1);
        if( ind == 0 ) return 0;
        return C(ind+1);
    }

    return 0;
}