Cod sursa(job #1298311)

Utilizator RaduVisanRadu Visan RaduVisan Data 22 decembrie 2014 18:40:27
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int NMAX = 10010, INF = 0x3f3f3f3f;

int T, N, V[NMAX];

int B(int Pos);
int C(int Pos);

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

int C(int Pos)
{
    if(Pos > N + 1) return INF;
    if(V[Pos] == 2) return Pos + 1;
    if(V[Pos] == 3) return C(B(Pos + 1));
    if(V[Pos] == 1 && V[Pos + 1] == 2) return Pos + 3;
    return INF;
}

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

    scanf("%i", &T);
    for(; T; T --)
    {
        scanf("%i", &N);
        for(int i = 1; i <= N; ++ i) scanf("%i", &V[i]);

        if(N == 1 || B(1) == N + 1 || C(1) == N + 1) printf("1\n");
        else printf("0\n");
    }
}