Cod sursa(job #1059547)

Utilizator MyrmekoMeMarin Cristian MyrmekoMe Data 16 decembrie 2013 19:35:39
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#define A 10000
#define fr(i,a,b) for(int i=a;i<b;++i)
int a[A];
int n,l;
bool cancn(int,int);
bool canbcn(int,int);
bool cana(int i){
    return l-i==1;
    }
bool canbcn(int i,int n){
    if(l-i<5+n)return false;
    if(a[i]==2)return canbcn(i+1,n);
    if(a[i]==1&&a[i+2]==3)return cancn(i+4,n+1);
    return false;
    }
bool cancn(int i,int n){
    if(n==0) return l-i==0;
    if(l-i<n)return false;
    if(a[i]==2)return cancn(i+1,n-1);
    if(l-i<n+2)return false;
    if(a[i]==1&&a[i+1]==2)return cancn(i+3,n-1);
    if(a[i]==3)return canbcn(i+1,n);
    return false;
    }
int main(){
    freopen("perle.in","r",stdin);
    freopen("perle.out","w",stdout);
    scanf("%i",&n);
    fr(i,0,n){
        scanf("%i",&l);
        fr(j,0,l)scanf("%i",a+j);
        int s=cana(0)||canbcn(0,0)||cancn(0,1);
        printf("%i\n",s);
        }
    return 0;
    }