Cod sursa(job #404542)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 26 februarie 2010 12:01:56
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#define KMAX 10002
int n,k,A[KMAX],nrc;
int perla_b(int poz);
int perla_c(int poz);
int perla_a(int poz)
{
	if (poz==k && !nrc)
		return 1;
	if (nrc)
	{
		nrc--;
		return perla_c(poz+1);
	}
	return 0;
}
int perla_b(int poz)
{
	if (A[poz]==2 && poz+1<=k)
		return perla_b(poz+1);
	if (A[poz]==1 && A[poz+2]==3 && poz+4<=k)
		return perla_c(poz+4);
	return 0;
}
int perla_c(int poz)
{
	
	if (A[poz]==2 && poz==k && !nrc)
		return 1;
	if (A[poz]==2 && nrc)
	{
		nrc--;
		return perla_c(poz+1);
	}
	if (A[poz]==1 && A[poz+1]==2 && poz+2<=k)
		return perla_a(poz+2);
	if (A[poz]==3)
	{
		nrc++;
		return perla_b(poz+1);
	}
	return 0;
}
int main()
{
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	scanf("%d",&n);
	int i;
	for( int j = 1; j <= n; j++)
	{
		scanf("%d",&k);
		nrc=0;
		for (i=1; i<=k; i++)
			scanf("%d",&A[i]);
		if (perla_a(1))
			{printf("1\n");continue;}
		nrc=0;
		if (perla_b(1))
			{printf("1\n");continue;}
		nrc=0;
		if (perla_c(1))
			{printf("1\n");continue;}
			printf("0\n");
		
	}
	return 0;
}