Cod sursa(job #328029)

Utilizator radu_cppRadu Voroneanu radu_cpp Data 30 iunie 2009 19:43:49
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>

int a[10010];
int n,t,i;

char perlab(int x);
char perlac(int x);

char perlab(int x)
{
	if (a[x]==2) return perlab(x+1);
	else
		if (a[x]==1 && a[x+2]==3) return perlac(x+4);
	return 0;
}

char perlac(int x)
{
	if (x==n+1) return 1;
	if (a[x]==2) return perlac(x+1);
	if (a[x]==1 && a[x+1]==2) return perlac(x+3);
	if (a[x]==3) return perlab(x+1);
	return 0;
}

void rasp(char ok)
{
	printf("%d\n",ok);
}

void solve()
{
	char ok;
	scanf("%ld",&n);
	for (i=1; i<=n; i++)
		scanf("%ld",&a[i]);
	if (n==1) 
	{
		rasp(1);
		return;
	}
	if (n==2) 
	{
		rasp(0);
		return;
	}
	if (a[1]==3)
	{
		ok=perlac(1);
		rasp(ok);
		return;
	}
	if (n>=4 && a[1]==1 && a[3]==3)
	{
		ok=perlab(1);
		rasp(ok);
		return;
	}
	if (a[1]==1 && a[2]==2)
	{
		ok=perlac(1);
		rasp(ok);
		return;
	}
	if (a[1]==2) 
	{
		ok=perlab(1);
		rasp(ok);
		return;
	}
	rasp(0);
	return;
}

int main()
{
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	scanf("%ld",&t);
	while (t)
	{
		solve();
		t--;
	}
	fclose(stdin); fclose(stdout);
	return 0;
}