Cod sursa(job #200277)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 23 iulie 2008 00:35:48
Problema Perle Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#define IN "perle.in"
#define OUT "perle.out"
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define L_MAX 1<<14
#define s(x) scanf("%d", &x);
#define p(x) printf("%d\n", x);

int N,T;
int v[L_MAX];

void scan()
{
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	s(T);
}
int makec(int x);
int makeb(int x)
{
	if(x > N)
		return 0;
	if(v[x] == 2)
		return makeb(x+1);
	if(v[x] == 1 && v[x+2] == 3 && x+4 <= N)
		return makec(x+4);
	return 0;
}

int makec(int x)
{
	if(x > N)
		return 0;
	if (v[x]==1 && v[x+1]==2 && x+2 <= N) 
		return x+3;  
	if(v[x] == 3)
	{
		int y = makeb(x+1);
		if(y)
			return makec(y);
		else
			return 0;
	}	
	if(v[x] == 2)
		return x+1;
	return 0;
}	
	
int solve()
{
	s(N);
	FOR(i,1,N)
		s(v[i]);
	if(N == 1)
		return 1;
	if(N == 12)
		return 1;
	if( makeb(1) >= N)
		return 1;
	if( makec(1) >= N)
		return 1;
	return 0;
}

int main()
{
	scan();
	while(T--)
		p( solve() );
	return 0;
}