Cod sursa(job #978485)

Utilizator stefanfStefan Fulger stefanf Data 28 iulie 2013 21:29:26
Problema Perle Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
 
#define L 10003
 
int vect[L];
 
int B(int p);
int C(int p);
 
int B(int p) {
    if (vect[p] == 2)
        return B(p + 1);
 
    if (vect[p] == 1 && vect[p + 2] == 3)
        return C(p + 4);
 
    return -1;
}
 
int C(int p) {
    if (vect[p] == 2)
        return p + 1;
 
    if (vect[p] == 1 && vect[p + 1] == 2)
        return p + 3;
 
    if (vect[p] == 3)
        return C(B(p + 1));
 
    return -1;
}
 
int tryParse(int l) {
    int result;
 
    if (l == 1)
        return 1;
     
    result = B(0);
    if (l == result)
        return 1;
 
    result = C(0);
    if (l == result)
        return 1;
 
    return 0;
}
 
int main() {
    freopen("perle.in", "r", stdin);
    freopen("perle.out", "w", stdout);
 
    int teste;
    int i, j, l;
    scanf("%d", &teste);
 
    for (i = 0; i < teste; i++) {
        scanf("%d", &l);
        for (j = 0; j < l; j++) {
            scanf("%d", &vect[j]);
        }
 
        printf("%d\n", tryParse(l));
    }
 
    return 0;
}