Cod sursa(job #233720)
Utilizator | Data | 18 decembrie 2008 23:36:57 | |
---|---|---|---|
Problema | Perle | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.21 kb |
# include <cstdio>
# define FIN "perle.in"
# define FOUT "perle.out"
# define MAXN 10005
int N, M, i, j, ct, ok;
int L[MAXN];
void verif(char s)
{
if (s == 'A') ++ct;
if (s == 'B')
{
if (L[ct] == 2)
{
++ct;
verif('B');
} else
if (L[ct] == 1)
{
++ct;
verif('A');
if (L[ct] == 3) ++ct;
else ok--;
verif('A');
verif('C');
} else
ok--;
}
if (s == 'C')
{
if (L[ct] == 2) ++ct;
if (L[ct] == 3)
{
++ct;
verif('B');
verif('C');
} else
if (L[ct] == 1)
{
++ct;
if (L[ct] == 2) ++ct;
else ok--;
verif('A');
}
}
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%d",&N);
for (i = 1; i <= N; ++i)
{
scanf("%d",&M);
L[M + 1] = 0;
for (j = 1; j <= M; ++j)
scanf("%d",&L[j]);
ct = 1; ok = 0;
verif('A');
if (ct == M + 1 && !ok)
printf("1\n");
else
{
ct = 1; ok = 0;
verif('B');
if (ct == M + 1 && !ok)
printf("1\n");
else
{
ct = 1; ok = 0;
verif('C');
if (ct == M + 1 && !ok)
printf("1\n");
else
printf("0\n");
}
}
}
return 0;
}