Cod sursa(job #1597767)

Utilizator krityxAdrian Buzea krityx Data 12 februarie 2016 12:04:32
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;

int c(int *v, int pos);

int b(int *v, int pos)
{
	if (v[pos] == 2)
	{
		return b(v, pos + 1);
	}
	if (v[pos] == 1 && v[pos + 2] == 3)
	{
		return c(v, pos + 4);
	}
	return false;
}

int c(int *v, int pos)
{
	if (v[pos] == 3)
	{
		return c(v, b(v, pos + 1));
	}
	else if (v[pos] == 2)
	{
		return pos + 1;
	}
	else if (v[pos] == 1 && v[pos + 1] == 2)
	{
		return pos + 3;
	}
	return pos;
}

int check(int *v, int l)
{
	int result = 0;
	if (l == 1)
	{
		if (v[l] == 1 || v[l] == 2 || v[l] == 3)
		{
			result = 1;
		}
	}
	else
	{
		result = b(v, 1) == l +1 || c(v, 1) == l + 1;
	}
	return result;
}

int main()
{
	int n, V[10002], L;
	ifstream f("perle.in");
	ofstream g("perle.out");
	f >> n;
	for (int i = 1; i <= n; i++)
	{
		f >> L;
		for (int j = 1; j <= L; j++)
		{
			f >> V[j];
		}
		g << check(V, L) << "\n";
	}
	f.close();
	g.close();

	return 0;
}