Cod sursa(job #1366201)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 28 februarie 2015 20:41:24
Problema Perle Scor 10
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];

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

bool Rezolvare(){

    if( L    == 1 ) return 1;
    if( B(1) == 1 ) return 1;
    if( C(1) == 1 ) 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;
}

bool 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;
}

bool C(long int ind){

    if( ind > L ) return 0;

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

    return 0;
}