Cod sursa(job #1498643)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 8 octombrie 2015 21:24:20
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>
#include <string.h>

using namespace std;

const int MN = 10010;

int Nextint()
{
    char S[100];
    int Num = 0,i = 0;
    bool Neg = 0;

    scanf("%s",S);

    if (S[0] == '-')
        Neg = 1,i++;

    for (;i < strlen(S);i++)
        Num = Num * 10 + (S[i] - '0');

    if (Neg)
        Num *= -1;

    return Num;
}

int N,M;
int V[MN];
int B(int it);
int C(int it);

bool Check()
{
    if (M == 1 || B(1) == M + 1 || C(1) == M + 1)
       return 1;

    return 0;
}

int B(int it)
{
    if (V[it] == 2)
       return B(it + 1);

    if (V[it] == 1 && V[it + 2] == 3)
       return C(it + 4);

    return 0;
}

int C(int it)
{
    if (V[it] == 2)
       return it + 1;

    if (V[it] == 3)
       return C(B(it + 1));

    if (V[it] == 1 && V[it + 1] == 2)
       return it + 3;

    return 0;
}

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

     N = Nextint();

     while (N--)
     {
         M = Nextint();

         for (int i = 1;i <= M;i++)
             V[i] = Nextint();

         printf("%d\n",Check());
     }

  return 0;
}