Cod sursa(job #221686)

Utilizator petroMilut Petronela petro Data 17 noiembrie 2008 17:35:06
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
#define M 10003
int v[M],n,j=1,l;

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

 
 int perle_b(int j)
 {
  if(v[j]==2 && l>=6) if(j+1<l) {j++;
			         perle_b(j);}

  else if(v[j]==1 && j+2<l && v[j+2]==3 && l>=5) if(j+4<l) {j=j+4;
							    perle_c(j);}

 }

 int perle_c(int j)
 {int k=0,m;

 if(v[j]==2) j++;

 else if(v[j]==1 &&v[j+1]==2 && l>=3 && j+2<l) j=j+3;
       
      else if(v[j]==3 && l>=7 &&j+1<l) {j=j+1;
        				    k++;
					    perle_b(j);}

           else if(k>=1) for(m=1;m<=k;m++)
			   perle_c(j);

 }
        		
int main()
{int a,b,i,m;

fscanf(f,"%d",&n);

for(i=1;i<=n;i++)
{fscanf(f,"%d",&l);

 if(l==1) {fprintf(g,"1\n");
 	   fscanf(f,"%d",&a);}	

 else if(l==2) {fprintf(g,"0\n");
		fscanf(f,"%d%d",&a,&b);}

      else {for(m=1;m<=l;m++)
	     fscanf(f,"%d",&v[m]);
	       
	    if(v[1]==2) perle_b(j);

	    else if((v[1]==3)||(v[1]==1)) perle_c(j);

	    if(j==l) fprintf(g,"1\n");
	    else fprintf(g,"0\n");

	    for(m=1;m<=l;m++)
             v[m]=0;
	    }

 }

 fclose(f);
 fclose(g);
 return 0;
 }