Cod sursa(job #459517)

Utilizator DaninetDani Biro Daninet Data 30 mai 2010 00:12:09
Problema Perle Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>

int a[10003];	
int n, x;
int max,solveC;


bool SolveC(int k);
bool SolveB(int k);


bool SolveB(int k) {
	if (a[k] == 2) 
		return SolveB(k+1);
	
	if (a[k] == 1&& a[k+2] == 3) 
		return SolveC(k+4);
	
	
	return 0;
}

bool SolveC(int k) {
	max = k;
	if (a[k] == 2) {
		max = k+1;
		return 1;
	}
	if (a[k] == 1 && a[k+1] == 2 && a[k+2]!=0) {
		max = k+3;
		return 1;
	}
	if (a[k] == 3){
		++solveC;
		return SolveB(k+1);
		
	}
	
	return 0;
}
bool Solve() {
	solveC = 0;
	max = 0;
	bool ok = false;
	if (x == 1) {
		return 1;
	}
	if (x == 2) {
		return 0;
	}
	if (a[1] == 3) {
		ok = SolveC(1);
	}
	else ok = SolveB(1);	
	for (int i = 1; i<=solveC; ++i) {
		ok = (ok && SolveC(max));
	}
	return ok;
}




int main() {
	FILE *f, *g;
	f = fopen("perle.in","r");
	g = fopen("perle.out","w");
	fscanf(f,"%d\n", &n);
	for (int i = 0; i<n; ++i) {
		fscanf(f,"%d ", &x);
		for (int j = 1; j<=x; ++j) {
			fscanf(f, "%d \n", &a[j]);
		}
		fprintf(g,"%d\n",Solve());
		
	}
	
	
	fclose(f);
}