Cod sursa(job #200271)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 23 iulie 2008 00:26:32
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define IN "perle.in"
#define OUT "perle.out"

int a[1<<17],N,T;

void scan()
{
	freopen(IN,"r",stdin);
	freopen(OUT,"w",stdout);
	scanf("%d",&T);
}

int makec(int x);
int makeb(int x)
{
	if( x > N ) 
		return 0;
	if( a[x]==2 ) 
		return makeb(x+1);
	if( a[x] == 1 && a[x+2] == 3 && x+4 <= N ) 
		return makec(x+4);
	return 0;
}

int makec(int x)
{
	if( x > N ) 
		return 0;
	if( a[x] == 1 && a[x+1] == 2 && x+1 <= N ) 
		return x+3;
    if (a[x]==3)
	{
		int y = makeb(x+1);
		if (y!=0) 
			return makec(y); 
		else 
			return 0;
	} 
	if( a[x] == 2 ) 
		return x+1;
	return 0;
}

inline int solve()
{
	scanf("%d", &N);
	FOR(i,1,N)
		scanf("%d", &a[i]);
	if(N==1)
		return 1;
	if(makeb(1) >= N)
		return 1;
	if(makec(1) >= N)
		return 1;
	return 0;
}

int main()
{
	scan();
	while(T--)
		printf("%d\n", solve() );
	return 0;
}