Cod sursa(job #653498)

Utilizator GManiakGhenea Catalin GManiak Data 28 decembrie 2011 04:53:55
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream.h>
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("perle.in");
ofstream h("perle.out");
int s[100002],n,i,k=0;
int b( )
{
	if (s[i]==2)
		return 1;
	if (s[i]==1 && s[i+2]==3)
		return 2;
	return 0;
}
int c( )
{
	if (s[i]==2)
		return 1;
	if(s[i]==3)
		return 2;
	if(s[i]==1 && s[i+1]==2)
		return 3;
	return 0;
}
void solvec();
void solveb()
{
	int nr;
	nr=b();
	if (i<n && nr )
	{
		if(nr==1)
		{
			i++;
			k=0;
			solveb();
		}
		else if(nr==2)
		{
			k=0;
			i+=4;
			solvec();
		}
	}
	else if (!nr)i=n+2;
}
void solvec()
{
	int nr;
	nr=c();
	if(nr && i<n)
	{
		if(nr==1)
		{	i++;
			k=1;
		}
		else if(nr==2)
		{
			i++;
			k=0;
			solveb();
			solvec();
		}
		else if(nr==3)
		{
			i+=3;
			k=1;
		}
	}
	else if (!nr) i=n+2;
}
int main()
{
	int j,m,c=0;
	for(f>>m;m;m--)
	{
		f>>n;
		for(j=0;j<n;j++)
			f>>s[j];
		if(n==1)
			h<<1<<endl;
		else
		{
			i=0;
			solveb();
			if(i==n && k)
				h<<1<<endl;
			else
			{
				i=0;
				solvec();
				if(i==n && k)
					h<<1<<endl;
				else
					h<<0<<endl;
			}

		}
	}
	return 0;
}