Cod sursa(job #1371911)

Utilizator buruskaBurus Endre buruska Data 4 martie 2015 10:12:16
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>

using namespace std;

ifstream f("perle.in");
ofstream g("perle.out");

int X[10000];
int p;
bool ki;

bool megold_b();
bool megold_c(); 

int n;

int main()
{
	int N, j;
	f >> N;
	int i;
	for (i = 0; i < N; i++)
	{
		f >> n;
		for (j = 0; j < n; j++)
		{
			f >> X[j];
		}
		p = 1;
		if (n != 1)
		{
			ki = false;
			if (X[0] == 2)
				megold_b();
			else
				megold_c();
		}
		
		if (n == 1)
			g << "1\n";
		else if (p == n - 1)
			g << "1\n";
		else
			g << "0\n";
	}
}


bool megold_b()
{
	if (ki && p >= n)
		return false;
	if (X[p] == 2)
	{
		p++;
		megold_b();
		return false;
	}
	if (X[p] == 1)
	{
		if (X[p + 2] != 3)
		{
			p = 0;
			return false;
		}
		p+=4;
		megold_c();
		return false;
	}
	if (X[p] == 3)
	{
		p = 0;
		ki = true;
	}

		
	return false;
}

bool megold_c()
{
	if (ki && p >= n)
		return false;
	if(X[p] == 2)
		return false;
	if(X[p] == 3)
	{
		p++;
		megold_b();
		p++;
		megold_c();
		return false;
	}
	if (X[p] == 1)
	{
		if (X[++p] != 2)
		{
			p = 0;
			ki = true;
			return false;
		}

			
		p++;
		return false;
	}

}