Cod sursa(job #107575)

Utilizator za_wolfpalianos cristian za_wolf Data 19 noiembrie 2007 23:29:43
Problema Perle Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
long x[20006],l,poz,i,j,k,n,m,N,a,c,b;
void be()
{
	while (x[poz]==2) poz++;
	if (x[poz]==1&&x[poz+2]==3&&poz+2<n) {poz+=4;c=1; }else
	if (x[poz]==2&&poz==n) {b=1;a=0;poz=101;}  else
	if (x[poz]==1&&x[poz+1]==2&&poz+2==n) {b=1;a=0;poz=101;}
}
int main()
{
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	scanf("%ld",&N);
	for (l=1;l<=N;l++)
	{
		scanf("%ld",&n);
		for (i=1;i<=n;i++)
		{
			scanf("%ld",&x[i]);
			x[i+n]=0;
		}
		if (n==1&&x[1]==1) printf("1\n"); else
		if (n==1&&x[1]==2) printf("1\n"); else
		if (n==1&&x[1]==3) printf("1\n"); else
		if ((n==3&&x[1]==1&&x[2]==2)&&(x[3]==1||x[3]==2||x[3]==3)) printf("1\n"); else
		{
			poz=1;
			a=1;
			b=0;
			while (a)
			{
				a=0;
				c=0;
				if (x[poz]==2||x[poz]==1)
				{
				be();
				a=1;
				}
				if (x[poz]==3&&c)
				{
					poz++;
					be();
					a=1;
				}          else
				if (x[poz]==2&&n==poz) {b=1;a=0;poz=101;} else
				if (x[poz]==1&&x[poz+1]==2&&poz+2==n) {b=1;a=0;poz=101;}
				if (poz>=n) a=0;



			}
			if (b) printf("1\n"); else printf("0\n");
		}

	}


	return 0;
}