Cod sursa(job #29672)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 9 martie 2007 19:16:28
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.28 kb
#include<stdio.h>
long t,l,a[10003],i,j,sir[10003],ok,count,k;
int main()
{
 freopen("perle.in","r",stdin);
 freopen("perle.out","w",stdout);
 scanf("%ld",&t);
 for(i=1;i<=t;i++)
  {
  for(j=1;j<=l;j++)
   sir[j]=0;
  scanf("%ld",&l);
  for(j=1;j<=l;j++)
      {
      scanf("%ld",&a[j]);
      }
 if (l==1)
  {
  sir[1]=4;
  }
  else
  if (a[1]==2)
   sir[1]=5;
 else
  if (a[1]==1)
    {
    if (l==3) sir[1]=6;
    if (l>3) sir[1]=5;    
    }
 else
   if (a[1]==3)
    {
    sir[1]=6;
    }
 ok=1;
 count=1;
 for(j=1;j<=l;j++)
   if (sir[j]!=a[j])
      {
      if (!ok) break;
      if (a[j]==1)
          {
          if (sir[j]==4) sir[j]=a[j];
          else
          if (sir[j]==5)
              {
              for(k=count;k>=j+1;k--)
                 {
                 sir[k+4]=sir[k];
                 }
              sir[j]=1;
              sir[j+1]=4;
              sir[j+2]=3;
              sir[j+3]=4;
              sir[j+4]=6;
              count+=4;
              }
          else
          if (sir[j]==6)
              {
              for(k=count;k>=j+1;k--)
                 {
                 sir[k+2]=sir[k];
                 }
               sir[j]=1;
               sir[j+1]=2;
               sir[j+2]=4;
               count+=2;
              }
          else
           ok=0;
          }
      if (a[j]==2)
          {
          if (sir[j]==4) sir[j]=a[j];
          else
          if (sir[j]==5)
              {
                for(k=count;k>=j+1;k--)
                 {
                 sir[k+1]=sir[k];
                 }
              sir[j]=2;
              sir[j+1]=5;
              count+=1;
              }
          else
          if (sir[j]==6) sir[j]=a[j];
          else ok=0;
          }
      if (a[j]==3)
         {
          if (sir[j]==4) sir[j]=a[j];
          else
          if (sir[j]==6)
              {
                for(k=count;k>=j+1;k--)
                 {
                 sir[k+2]=sir[k];
                 }
               sir[j]=3;
               sir[j+1]=5;
               sir[j+2]=6;
               count+=2;
              }
         else ok=0;
         }
      }
    if (!sir[l+1])
    printf("%ld\n",ok);
    else
    printf("0\n");
    }
 printf("\n");
}