Cod sursa(job #880826)

Utilizator superman_01Avramescu Cristian superman_01 Data 17 februarie 2013 13:35:27
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<cstdio>

#define MAX_SIZE 10005

FILE *f=fopen("perle.in","r");
FILE *g=fopen("perle.out","w");

using namespace std;

int n,v[MAX_SIZE],q;
int C(int numb);

inline int B ( int numb )
{
	if( numb > q )
		return 0;	
	
	if( v[numb] == 2 )
	   return B(numb+1);
	else
	   if( v[numb] == 1 && v[numb+2] == 3 )
	          return C (numb+4);	

   return 0;
}


inline int C ( int numb )
{
	if( numb > q)
		return 0;
	else
	if(v[numb] == 2 )
		return B(numb+1);
	else
	if(v[numb] == 3 )
	{
		int k=B(numb+1);
		if(k)
			return C(k+1);
		
		
	}
	else
	if(v[numb] == 1 && v[numb+1] == 2)
		return numb+2;
	
	return 0;
}



int read( void )
{
	fscanf(f,"%d",&n);
	
	while( n )
	{
		fscanf(f,"%d",&q);
		for(int index(1); index <= q; ++index)
			fscanf(f,"%d",&v[index]);
		if( q == 1 )
		   fprintf(g,"1\n");
		else
			if( B(1) == q || C(1) == q)
				fprintf(g,"1\n");
		else
			 fprintf(g,"0\n");
		n--;
	}
	
	
}

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