Cod sursa(job #457003)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 17 mai 2010 19:51:04
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#define lmax 10010

int v[lmax], n, l;

int solve_C(int);

int solve_B(int p)
{
	if (p>l) return 0;
	if (v[p]==2 && p<l) return solve_B(p+1);
	if (v[p]==1 && v[p+2]==3 && p+3<l) return solve_C(p+4);
	return 0;
}

int solve_C(int p)
{
	int k;
	if (v[p]==2) return p+1;
	if (v[p]==3)
	{
		k=solve_B(p+1);
		if (k) return solve_C(k);
		return 0;
	}
	if (p+1<l && v[p]==1 && v[p+1]==2) return p+3;
}

int solve()
{
	if (l==1) return 1;
	if (solve_B(1)>l) return 1;
	if (solve_C(1)>l) return 1;
	return 0;
}

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