Cod sursa(job #413611)

Utilizator nandoLicker Nandor nando Data 8 martie 2010 20:32:52
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>

FILE* fin=fopen("perle.in","r");
FILE* fout=fopen("perle.out","w");

int vec[10001],len,aux;

int try_b(int),try_c(int);

int try_b(int pos){
	if(vec[pos]==2){
		return try_b(pos+1);
	}
	if(vec[pos]==1&&vec[pos+2]==3){
		return try_c(pos+4);
	}	
	return try_c(pos+1);
}

int try_c(int pos){
	if(vec[pos]==2&&pos==len-1){
		return true;
	}
	if(vec[pos]==1&&vec[pos+1]==2&&pos+3==len){
		return true;
	}
	if(vec[pos]==2){
		return try_c(pos+1);
	}	
	if(vec[pos]==3){
		return try_b(pos+1);
	}
	if(vec[pos]==1&&vec[pos+1]==2){
		return try_c(pos+3);
	}
	return 0;
}

inline int process(){
	if(len==1){
		return 1;
	}else if(len==2){
		return 0;
	}
	if(vec[1]==3){
		return try_c(0);
	}else{
		return try_b(0);
	}
}

int main(){
	int n;
	fscanf(fin,"%u",&n);
	for(int i=0;i<n;i++){
		fscanf(fin,"%u",&len);
		for(int i=0;i<len;i++){
			fscanf(fin,"%u",&vec[i]);		
		}
		fprintf(fout,"%u\n",process());
	}
	fclose(fin);
	fclose(fout);
	return 0;
}