Cod sursa(job #832428)

Utilizator dariusdariusMarian Darius dariusdarius Data 10 decembrie 2012 16:41:05
Problema Perle Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<string.h>
int n,u,a[10010];
bool perla_b();
bool perla_c();
bool cond()
{
    bool rez;
    u=1;rez=(perla_b() && u>=n);
    u=1;rez=(perla_c() && u>=n);
    return rez || n==1;
}
bool perla_b()
{
    if(n-u>=3 && a[u]==1 && a[u+2]==3) {u=u+4;return perla_c();}
    if(a[u]==2) {u++;return perla_b();}
    return false;
}
bool perla_c()
{
    if(a[u]==1 && a[u+1]==2) {u=u+3;return true;}
    if(a[u]==2) {u++;return true;}
    if(a[u]==3) {u++;perla_b();return perla_c();}
    return false;
}
int main()
{
    freopen("perle.in","r",stdin);
    freopen("perle.out","w",stdout);
    int T;
    for(scanf("%d",&T);T;T--)
    {
        scanf("%d",&n);
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        printf("%d\n",cond());
    }
    return 0;
}