Cod sursa(job #209937)

Utilizator katakunaCazacu Alexandru katakuna Data 25 septembrie 2008 18:03:21
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

int sol,v[11000],T,t,n,i;

int rezB(int p);

int rezC(int p){

  if(v[p]==2){
    if(n+1!=p+1)return 0;
  return p+1;
  }

  if(v[p]==1 && v[p+1]==2 ){
     if(n+1!=p+3)return 0;
  return p+3;
  }


  if(v[p]==3){
  p=rezB(p+1);
    if(p>n)
    return 0;
  return(rezC(p));
  }


}


int rezB(int p){

  for(;v[p]==2;p++)
    if(p>=n)
    return 0;

  if(v[p]==1&&v[p+2]==3&&n>=p+4)
  rezC(p+4);


}


int main(){


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

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

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

      for(i=1;i<=n;i++)
      fscanf(f,"%d",&v[i]);

    sol=0;
    
    if(n==1)
    sol=n+1;

    else{

       if(v[1]==1){

          if(n==3&&v[2]==2)//12A
          sol=n+1;

          if(n>=5&&v[3]==3){
          //incep cu B;
          sol=rezC(5);

          }

       }

       if(v[1]==2){
       sol=rezB(1);
       }

       if(v[1]==3){
       sol=rezC(1);
       }

    }

    if(sol==n+1)
    sol=1;
    else
    sol=0;
    
    fprintf(g,"%d\n",sol);


   }


fclose(f);
fclose(g);

return 0;
}