Cod sursa(job #618478)

Utilizator predator5047Butiu Alexandru Octavian predator5047 Data 15 octombrie 2011 17:28:47
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <stdio.h>

using namespace std;

const int nmax = 10010;
int N, A[nmax];

int C(int ind);

int B(int ind)
{
    if(ind > N + 1)
        return ind;
    if(A[ind] == 2)
        return B(ind + 1);
    if(A[ind] == 1 && A[ind + 2] == 3)
        return C(ind + 4);
    return N + 2;
}

int C(int ind)
{
    if(A[ind] == 2)
        return ind + 1;
    if(A[ind] == 1 && A[ind + 1] == 2)
        return ind + 3;
    if(A[ind] == 3)
        return C(B(ind + 1));
    return N + 2;
}

int main()
{
    freopen ("perle.in","r", stdin);
    freopen ("perle.out", "w", stdout);

    int Q, i, Rez;
    scanf("%d", &Q);
    while(Q--)
    {
        scanf("%d", &N);
        for(i = 1; i <= N; i++)
            scanf("%d", &A[i]);

        if(N == 1)
            Rez = 1;
        else {
            Rez = B(1);
            if(Rez != N + 1)
                Rez = C(1);
            if(Rez == N + 1)
                Rez = 1;
            else Rez = 0;
        }

        printf("%d\n", Rez);
    }
    return 0;
}