Cod sursa(job #674522)

Utilizator PatrikStepan Patrik Patrik Data 6 februarie 2012 14:29:42
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
	#include<stdio.h>
	FILE *f , *g ;
	int n , l , v[10010] , k , u;
	bool sw = 1;
	
	void citire();
	int solve();
	void C(int i);
	void B(int i);
	
	int main()
	{
		f=fopen("perle.in" , "r" );
		g=fopen("perle.out" , "w" );
		fscanf(f , "%d" , &n );
		for(int i = 1 ; i<= n ; ++i )
		{
			sw = 1;
			citire();
			if(l == 1)
				fprintf(g , "1\n");
			else
			if(l == 2)
				fprintf(g , "0\n");
			else
			if(l == 3 && v[1] == 1 && v[2] == 2)
				fprintf(g , "1\n");
			else
				fprintf(g , "%d\n" , solve());
		}
		fclose(f);
		fclose(g);
	}
	
	int solve()
	{
		if(v[1] == 1 || v[1] == 2)
			B(1);
		else
			C(1);
		return sw;
	}
	
	void B(int i)
	{
		while(v[i] == 2)
			i++;
		if(v[i] == 1 && v[i+2] == 3)
			C(i+4);
		else
			sw = 0;
	}
	
	void C(int i)
	{
		
		if(v[i] == 1 && v[i+1] == 2)
			u = i+3;
		else
			if(v[i] == 3)
			{
				B(i+1);
				C(u);
			}
			else
				sw = 0;
	}
	
	void citire()
	{
		fscanf(f , "%d" , &l);
		for(int i = 1 ; i <= l ; ++i )
			fscanf(f , "%d" , &v[i] );
	}