Cod sursa(job #17087)

Utilizator cypryCiprian Oprisa cypry Data 14 februarie 2007 20:30:08
Problema Perle Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>

int v[10001];

int posibil(void)
{
 int n=v[0],i;
 if(n==1) return 1;
 if(n==2) return 0;
 if((n==3) && ((v[1]!=1) || (v[2]!=2))) return 0;
  else if(n==3) return 1;
 if((v[1]==1) && (v[3]!=3)) return 0;
 if(v[1]==2)
  {
   i=1;
   while(v[i]==2) i++;
   if(v[i]!=1 || v[i+2]!=3) return 0;
   if((v[i+4]==2) && (n!=i+4)) return 0;
   if((v[i+4]==1) && (v[i+5]!=2 || (n!=i+6))) return 0;
   if((v[i+4]==3) && (v[i+5]!=2)) return 0;
  }
 if(v[1]==3)
  {
   i=2;
   while(v[i]==2) i++;
   if(v[i]!=1 || v[i+2]!=3) return 0;
  }
 if(v[n-2]!=1 || v[n-1]!=2) return 0;
 return 1;
}


int main()
{
 FILE *fin=fopen("perle.in","r"),*fout=fopen("perle.out","w");
 int n,i,j;
 fscanf(fin,"%d\n",&n);
 for(i=1;i<=n;i++)
  {
   fscanf(fin,"%d",&v[0]);
   for(j=1;j<=v[0];++j)
    fscanf(fin,"%d",&v[j]);
   fprintf(fout,"%d\n",posibil());
  }
 fclose(fin);
 fclose(fout);
 return 0;
}