Pagini recente » Cod sursa (job #2585441) | Cod sursa (job #2032320) | Cod sursa (job #1748722) | Cod sursa (job #1917227) | Cod sursa (job #614446)
Cod sursa(job #614446)
#include <iostream>
#include <stdio.h>
using namespace std;
const int nmax = 10010;
int N, A[nmax];
int F(int ind, int P)
{
if(ind > N)
return N + 1;
if(P == 4 && N == 1)
return ind;
if(P == 5)
{
if(A[ind] == 2)
return F(ind + 1, P);
if(A[ind] == 1 && A[ind + 2] == 3)
return F(ind + 4, 6);
return 0;
}
if(P == 6)
{
if(ind == N && A[ind] == 2)
return ind;
if(A[ind] == 3)
return F(F(ind + 1, 5), 6);
if(A[ind] == 1 && A[ind + 1] == 2 && ind + 2 == N)
return N;
return 0;
}
return 0;
}
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]);
Rez = F(1, 4);
if(Rez != N)
Rez = F(1, 5);
if(Rez != N)
Rez = F(1, 6);
if(Rez == N)
Rez = 1;
else Rez = 0;
printf("%d\n", Rez);
}
return 0;
}