Cod sursa(job #209939)

Utilizator katakunaCazacu Alexandru katakuna Data 25 septembrie 2008 18:26:05
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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)
  return p+1;

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

  if(v[p]!=3)
  return 0;

  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)
  return 0;

  return(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){
          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);
    for(i=1;i<=n;i++)
    v[i]=0;

   }


fclose(f);
fclose(g);

return 0;
}