Cod sursa(job #28349)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 7 martie 2007 19:07:45
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
int l,x[10009],n,i,j,ok;
int perla(int poz,int c)
{
	if(poz==l){if(c==2)return 0;if(x[poz]==2)return 1;return 0;}
	if(poz==(l-1)) return 0;
	if(poz==(l-2)){if(c==2)return 0;if((x[poz]==1)&&(x[poz+1]==2))return 1;return 0;}
	if(poz==(l-3))return 0;
	if(c==2)
	{ if(x[poz]==3) return 0;
	  if(x[poz]==2) return perla(poz+1,2);
	  if(x[poz+2]==3) perla(poz+4,3);
	  return 0;
	}
	if(x[poz]==2) return 0;
	if(x[poz]==1);return 0;
	if(x[l-2]!=1)return 0;
	if(x[l-1]!=2)return 0;
	l=l-3; return perla(poz+1,2);
}
int main()
{    FILE *f,*g;
     f=fopen("perle.in","r");
     g=fopen("perle.out","w");
     fscanf(f,"%d",&n);
     for(i=1;i<=n;i++)
     {fscanf(f,"%d",&l);
      for(j=1;j<=l;j++)
      fscanf(f,"%d",&x[j]);
      if(l>=5)
	{ if(x[1]==3)ok=perla(1,3);
		else ok=perla(1,2);
	}
      else {if(l==1)ok=1;
	    if(l==2)ok=0;
	    if(l==4)ok=0;
	    if(l==3){if((x[1]==1)&&(x[2]==2))ok=1;
			else ok=0;}
	    }
      fprintf(g,"%d\n",ok);
     }
     fcloseall();
     return 0;
}