Cod sursa(job #448843)

Utilizator HoriaClementHoriaC HoriaClement Data 4 mai 2010 20:46:24
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
int n;
int v[100009];

int rez_c(int x);

int rez_b(int x)
{
	if(x>n)
		return 0;
	if(v[x]==2)
		return rez_b(x+1);
	if(v[x]==1 && v[x+2]==3 && (x+4<=n))
		return rez_c(x+4);
	return 0;
}

int rez_c(int x)
{
	int poz;
	if(x>n)
		return 0;
	if(v[x]==1 && v[x+1]==2 && x+1<=n)
	{
		return x+3;
	}
	if(v[x]==3)
	{
		poz=rez_b(x+1);
		if(poz)
			return rez_c(poz);
		else
			return 0;
	}
	if(v[x]==2)
	{
		return x+1;
	}
	return 0;
}

int rez()
{
	if(n==1)
		return 1;
	if(n==2)
		return 0;
	if(rez_b(1)>=n)
		return 1;
	if(rez_c(1)>=n)
		return 1;
	return 0;
}

void read()
{
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	int t,i;
	scanf("%d",&t);
	for(;t;t--)
	{
		scanf("%d",&n);
		for(i=1;i<=n;i++)
			scanf("%d",&v[i]);
		printf("%d\n",rez());
	}
}

int main()
{
	read();
	return 0;
}