Cod sursa(job #384436)

Utilizator johsonsbabiJohnsons Babi Minune johsonsbabi Data 20 ianuarie 2010 06:48:05
Problema Perle Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
FILE*f=fopen("perle.in","r");
FILE*g=fopen("perle.out","w");
int sol;
int v[10001],n,L,i,j;

int perlab(int p);

int perlac(int p){
	if(v[p]==2)
		return p+1;
	if(v[p]==1&&v[p+1]==2&&n==p+2){//aici n>=p+2
		return p+3;
	}
	if(v[p]!=3)
		return 0;
	p=perlab(p+1);
	if(p>n)return 0;
	return perlac(p);
}

int perlab(int p){
	for(;v[p]==2;p++)
		if(p==n)
			return 0;
	if(v[p]!=1||v[p+2]!=3||n<p+4)
		return 0;
	return perlac(p+4);
}

int main(){
	fscanf(f,"%d",&L);
	for(i=1;i<=L;i++){
		fscanf(f,"%d",&n);
		for(j=1;j<=n;j++)
			fscanf(f,"%d",&v[j]);
		sol=0;
		if(n==1)
			sol=2;
		else{
			if(v[1]==1){
				if(n==3&&v[2]==2)
					sol=4;
				if(n>=5&&v[3]==3)
					sol=perlac(5);
			}
			if(v[1]==2){
				sol=perlab(2);
			}
			if(v[1]==3){
				sol=perlac(1);
			}
		}
		if(sol==n+1)
			sol=1;
		else sol=0;
		fprintf(g,"%d\n",sol);
		for(j=1;j<=n;j++){
			v[j]=0;
		}
	}	
	
	fclose(f);
	fclose(g);
	return 0;
}