Cod sursa(job #221948)

Utilizator petroMilut Petronela petro Data 19 noiembrie 2008 08:20:55
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 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);
 int perle_c(int);

 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;   
 }