Cod sursa(job #978479)

Utilizator stefanfStefan Fulger stefanf Data 28 iulie 2013 21:05:39
Problema Perle Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 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)
        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;
}