Cod sursa(job #153122)

Utilizator Mishu91Andrei Misarca Mishu91 Data 10 martie 2008 10:14:33
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<cstdio>
#define Nmax 10005

FILE *fin=freopen("perle.in","rt",stdin),
     *fout=freopen("perle.out","wt",stdout);
     
int n,a[Nmax],l;

int fcb(int k); 
     
int fcc (int k)
{
  if(a[k] == 2 && k == l-1)
    return 0;
  
  if(k == l-1 && a[k-1] == 2)  
    return 1;
    
  else if (a[k] == 3)
    return 1 & fcb(k+1) & fcc(k+2);
  
  else if (a[k] == 1)
    return 1 & fcc(k+1);
    
  else if(a[k] == 2 && a[k-1] == 1)
    return 1 & fcc(k+1);
   
     
   else 
     return 0;  
}
     
int fcb (int k)
{
  if(a[k] == 2 && k==l-1)
    return 0;
  
  
  if(a[k] == 2)
    return 1 & fcb(k+1);
  
  else if(a[k] == 1)
    return 1 & fcb(k+2);
  
  else if (a[k] == 3 && a[k-2] == 1)
    return 1 & fcb(k+2);
  
  else if(a[k-2] == 3 && a[k-4] == 1)
    return 1 & fcc(k+1);
  
  else 
    return 0; 
}
  
     
void solve()
{
  scanf("%d",&l);
  for(int i=0; i<l; i++)
  {
    scanf("%d",a + i);
  }
    if(l == 1)  
    {
      printf("1\n");
      return ;
    }
  
    
  
  if(l >= 2)
  {
    if(a[0] == 1 || a[0] == 2)
      printf("%d\n",fcb(0));
    if(a[0] == 3)
      printf("%d\n",fcc(0));
  }   
 
} 

int main()
{
  scanf("%d",&n);
  for(int i=0;i<n;i++)
    solve();
  return 0;
}