Cod sursa(job #1372355)

Utilizator buruskaBurus Endre buruska Data 4 martie 2015 13:01:42
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 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 = 0;
		if (n != 1)
		{
			ki = false;
			if (megold_b())
				g << "1\n";
			else 
			{
				p = 0;
				if (megold_c())
					g << "1\n";
				else
					g << "0\n";
			}
			
		}
		else
			g << "1\n";
	}
	return 0;
}


bool megold_b()
{
	//cout << p << " b " << X[p] << "\n";
	if (p >= n)
		return false;
	if (X[p] == 2)
	{
		p++;
		return megold_b();
	}
	if (X[p] == 1)
	{
		if (X[p + 2] != 3)
			return false;
		p += 4;
		return megold_c();
	}
	return false;
}

bool megold_c()
{
	//cout << p << " c " << X[p] << "\n";
	if (p >= n)
		return false;
	if (X[p] == 1)
	{
		if (X[p + 1] != 2)
		{
			return false;
		}
		p += 3;
		if (p - 1 == n - 1)
			return true;
		else
		{
			return false;
		}
		
	}
	

	if (X[p] == 2)
	{
		p++;
		if (p - 1 == n - 1)
			return true;
		else
		{
			return false;
		}
	}

	if (X[p] == 3)
	{
		bool ki1, ki2;
		p++;
		ki1 = megold_b();
		ki2 = megold_c();
		return (ki2);
	}
	return false;
}