Cod sursa(job #256897)

Utilizator DraStiKDragos Oprica DraStiK Data 12 februarie 2009 14:12:10
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
int a[10001];
int n,t;
int b (int i);
int c (int i);
int solve ();
int main()
{
	freopen ("perle.in","r",stdin);
	freopen ("perle.out","w",stdout);
	int i,j;
	scanf("%d",&t);
	for(i=1; i<=t; ++i)
	{
		scanf("%d",&n);
		for(j=1; j<=n; ++j)
		    scanf("%d",&a[j]);
		printf("%d\n",solve());
	}
	return 0;
}
int solve()
{
	if(n==1)
		return 1;
	if(n==2)
		return 0;
	if(a[1]==3)
		return c(1);
	return b(1);
}
int b(int i)
{
	if(a[i]==2)
		return b(i+1);
	if(a[i]==1 && a[i+2]==3)
		return c(i+4);
	return c(i+1);
}
int c(int i)
{
	if(a[i]==2)
	{
		if(i==n)
			return 1;
		return c(i+1);
	}
	if(a[i]==1 && a[i+1]==2)
	{
		if(i+2==n)
			return 1;
		return c(i+3);
	}
	if(a[i]==3)
		return b(i+1);
	return 0;
}