Cod sursa(job #396836)

Utilizator BalcauIonutFMI-Balcau Ionut BalcauIonut Data 15 februarie 2010 22:25:43
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>

#define N 10005

int n, v[N];

int A();
int B(int i);
int C(int i);

int main()
{
 freopen("perle.in","r",stdin);
 freopen("perle.out","w",stdout);

 int t,j,ok;
 scanf("%d",&t);
 for(; t; --t)
 {
  scanf("%d", &n);
  for(j=1; j<=n; ++j)
    scanf("%d", &v[j]);
  ok=A();
  printf("%d\n",ok);
 }
 return 0;
}

int A()
{
 if(n==1)return 1;
 if(n==2)return 0;
 if(v[1]==3) return C(1);
 return B(1);
}

int C(int i)
{
 if(v[i]==2 && i==n)return 1;
 if(v[i]==2) return C(i+1);
 if(v[i]==3) return B(i+1);
 if(v[i]==1 && v[i+1]==2 && i+2==n) return 1;
 if(v[i]==1 && v[i+1]==2) return C(i+3);
 return 0;
}

int B(int i)
{
 if(v[i]==2) return B(i+1);
 if(v[i]==1 && v[i+2]==3)return C(i+4);
 return C(i+1);
}