Cod sursa(job #534306)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 15 februarie 2011 16:17:28
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>

FILE*f=fopen("perle.in","r");
FILE*g=fopen("perle.out","w");

int i,S[10005],n,q;

int C(int i);

int B(int i){
	if ( i > n || S[i] == 3 || ( S[i] == 1 && S[i+2] != 3 ))
		return 0;
	if ( S[i] == 1 && i < n - 3 ){
		return C(i+4);
	}
	if ( S[i] == 2 && i < n){
		return B(i+1);
	}
	return 0;
}

int C(int i){
	if ( i > n )
		return 0;
	if ( S[i] == 2 ){
		return i + 1;
	}
	if ( S[i] == 3 ){
		i = B(i+1);
		if ( i >= 1 && i <= n )
			return C(i);
	}
	if ( S[i] == 1 && S[i+1] == 2 && i + 2 <= n  ){
		return i + 3;
	}
	return 0;
}

int main () {
	fscanf(f,"%d",&q);
	
	while( q-- ){
		fscanf(f,"%d",&n);
		for ( i = 1 ; i <= n ; ++i )
			fscanf(f,"%d",&S[i]);
		if ( n == 1 ){	fprintf(g,"1\n"); continue; }
		if ( B(1) > n ){ fprintf(g,"1\n"); continue; }
		if ( C(1) > n ){ fprintf(g,"1\n"); continue; }
		
		fprintf(g,"0\n");
	}
	
	fclose(f);
	fclose(g);
	
	return 0;
}