Cod sursa(job #856591)

Utilizator zurzic_doruzurzic zeljko zurzic_doru Data 16 ianuarie 2013 19:26:11
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
long z,n,i,a[10005];
long B(long x);
long C(long x);
int main()
{
    freopen("perle.in","r",stdin);
    freopen("perle.out","w",stdout);
    
	scanf("%ld",&z);
    while(z)
    {
        scanf("%ld",&n);
        for(i=1;i<=n;++i)
            scanf("%ld",&a[i]);
        if(n==1||n==B(1)||n==C(1))
            printf("1\n");
        else
            printf("0\n");
        --z;
    }
    return 0;
}
long B(long x)
{
    if(n<x) 
		return 0;
    if(a[x]==2)
		return B(x+1);
    if(a[x]==1&&a[x+2]==3) 
		return C(x+4);
    return 0;
}
long C(long x)
{
    if(n<x) 
		return 0;
    if(a[x]==2) 
		return x;
    if(a[x]==1&&a[x+1]==2) 
		return x+2;
    if(a[x]==3)
    {
        long X=B(x+1);
        if(X) 
			return C(X+1);
    }
    return 0;
}