Cod sursa(job #333903)

Utilizator rumburakrumburak rumburak Data 24 iulie 2009 15:44:21
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<cstdio>

const int N = (1<<15);

int n;
char s[N];

int c(int);

int b(int poz)
{
	if(poz>n-5)
		return 0;
	if(s[poz<<1]=='2')
		return b(poz+1);
	if(s[poz<<1]=='1' && s[(poz<<1)+4]=='3')
		return c(poz+4);
	return 0;
}

int c(int poz)
{
	if(s[poz<<1]=='2')
		return poz+1;
	if(s[poz<<1]=='1' && s[(poz<<1)+2]=='2')
		return poz+3;
	if(s[poz<<1]=='3')
		return c(1+b(poz+1));
	return 0;
}

int rez()
{
	if(n==1)
		return 1;
	if(b(0)==n || c(0)==n)
		return 1;
	return 0;
}

int main()
{
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	int t;
	scanf("%d\n",&t);
	while(t--)
	{
		scanf("%d ",&n);
		fgets(s,N,stdin);
		printf("%d\n",rez());
	}
	return 0;
}