Cod sursa(job #20023)

Utilizator szakiold name szaki Data 20 februarie 2007 16:29:58
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>

int n,l;
int a[10001];

int test_b(int i);
int test_c(int i);

int test_b(int i)
{
	for (; i<l; i++)
		if (a[i]!=2) break;
	if (i==l) return 0;
	if (l < i+5) return 0;
	if (a[i]!=1 || a[i+2]!=3) return 0;
	return test_c(i+4);
}

int test_c(int i)
{
	if (a[i]==2) return i+1; // 2
	if (a[i]==1) // 12A
	{
		if (l < i+3) return 0;
		if (a[i+1]==2) return i+3;
	}

	i=test_b(i+1); // 3BC
	if (i==l || i==0) return 0;
	return test_c(i);
}


int test()
{
	if (l==1) return 1;

	if (a[0]==1)
	{
		if (l==3 && a[1]==2) return 1; // 12A
		if (l>=5 && a[2]==3) return (test_c(4) == l); // 1A3AC
	}
	if (a[0]==2)
		return (test_b(0)==l); // 2B

	return(test_c(0)==l); // 3BC
}

int main()
{
	int i,j;
	freopen("perle.in","r",stdin);
   freopen("perle.out","w",stdout);
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%d", &l);
		for (j=0;j<l;j++)
			scanf("%d", &a[j]);
		printf("%d\n", test());
	}
	return 0;
}