Cod sursa(job #1735123)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 29 iulie 2016 01:21:42
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin("perle.in");
ofstream fout("perle.out");

int v[10005],n;
int placeb(int p);
int placec(int p);

int main() {
	int i,t;

	fin>>t;
	while(t--) {
		fin>>n;
		for(i=1;i<=n;++i) fin>>v[i];

		if(n==1||placeb(1)==n+1||placec(1)==n+1) fout<<"1\n";
		else fout<<"0\n";
	}

	return 0;
}

int placeb(int p) {
	if(p+1<=n&&v[p]==2) return placeb(p+1);
	if(p+4<=n&&v[p]==1&&v[p+2]==3) return placec(p+4);

	return n+2;
}

int placec(int p) {
	if(p+2<=n) {
		if(v[p]==3) return placec(placeb(p+1));
		if(v[p]==1&&v[p+1]==2) return p+3;
	}
	if(p<=n&&v[p]==2) return p+1;

	return n+2;
}