Cod sursa(job #2211369)

Utilizator andra1782Andra Alazaroaie andra1782 Data 10 iunie 2018 00:42:27
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#define MAX 10000
FILE *fin,*fout;
int v[MAX],l,poz;

int c();

int a(){
    if(poz>=l)
        return -1;
    return poz;
}

int b(){
    if(poz>=l)
        return -1;
    if(v[poz]==2){
        poz++;
        return b();
    }
    if(v[poz]==1 && v[poz+2]==3){
        poz+=4;
        return c();
    }
    return -1;
}

int c(){
    if(poz>=l)
        return -1;
    if(v[poz]==2)
        return poz;
    if(v[poz]==1 && v[poz+1]==2){
        poz+=2;
        return a();
    }
    if(v[poz]==3){
        poz++;
        if(b()){
            poz++;
            return c();
        }
    }
    return -1;
}

int main(){
    fin=fopen("perle.in","r");
    fout=fopen("perle.out","w");
    int n,i,j;

    fscanf(fin,"%d",&n);
    for(i=0; i<n; i++){
        fscanf(fin,"%d",&l);
        for(j=0; j<l; j++)
            fscanf(fin,"%d",&v[j]);
        int x=0;
        poz=0;
        x+=(a()==l-1);
        poz=0;
        x+=(b()==l-1);
        poz=0;
        x+=(c()==l-1);
        if(x)
            fprintf(fout,"1\n");
        else
            fprintf(fout,"0\n");
    }
    fclose(fin);
    fclose(fout);
    return 0;
}