Pagini recente » Cod sursa (job #3216006) | Cod sursa (job #2960739) | Cod sursa (job #2958948) | Cod sursa (job #2935817) | Cod sursa (job #159575)
Cod sursa(job #159575)
#include<stdio.h>
int i,n,m,ts,a,b,c,e[10002];
int max(int a,int b)
{
if (a>b) return a;
else return b;
}
int EvalA();
int EvalB();
int EvalC();
int main()
{
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
scanf("%d",&n);
for (ts=1;ts<=n;ts++)
{
scanf("%d",&m);
for(i=1;i<=m;i++)
scanf("%d",&e[i]);
i=1;
if (m==1)
a=1;
else
a=0;
i=1;
b=EvalB();
i=1;
c=EvalC();
if (i!=m) c=0;
printf("%d\n",max(max(a,b),c));
}
return 0;
}
int EvalA()
{
if (i<=m)
{if (e[i]==1 || e[i]==2 || e[i]==3)
return 1;
else
return 0;
}
else
return 0;
}
int EvalB()
{
if (i<=m)
if (e[i]==2 && i<=m)
{
i++;EvalB();
}
else
{
if (e[i]!=1)
return 0;
i++;
if (EvalA()==0)
return 0;
i++;
if (e[i]!=3)
return 0;
i++;
if (EvalA()==0)
return 0;;
i++;
if (EvalC()==0)
return 0;;
}
if (i==m)
return 1;
else
return 0;
}
int EvalC()
{int r=0;
if (i<=m)
if (e[i]==2)
return 1;
else
if (e[i]==3)
{
i++;
r=EvalB();
if (r==1)
{
i++;
r=EvalC();
}
}
else
if (e[i]==1 && e[i+1]==2)
{
i+=2;
r=EvalA();
}
return r;
}