Pagini recente » Cod sursa (job #1063289) | Cod sursa (job #18731) | Cod sursa (job #395031) | Cod sursa (job #2833217) | Cod sursa (job #29672)
Cod sursa(job #29672)
#include<stdio.h>
long t,l,a[10003],i,j,sir[10003],ok,count,k;
int main()
{
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
scanf("%ld",&t);
for(i=1;i<=t;i++)
{
for(j=1;j<=l;j++)
sir[j]=0;
scanf("%ld",&l);
for(j=1;j<=l;j++)
{
scanf("%ld",&a[j]);
}
if (l==1)
{
sir[1]=4;
}
else
if (a[1]==2)
sir[1]=5;
else
if (a[1]==1)
{
if (l==3) sir[1]=6;
if (l>3) sir[1]=5;
}
else
if (a[1]==3)
{
sir[1]=6;
}
ok=1;
count=1;
for(j=1;j<=l;j++)
if (sir[j]!=a[j])
{
if (!ok) break;
if (a[j]==1)
{
if (sir[j]==4) sir[j]=a[j];
else
if (sir[j]==5)
{
for(k=count;k>=j+1;k--)
{
sir[k+4]=sir[k];
}
sir[j]=1;
sir[j+1]=4;
sir[j+2]=3;
sir[j+3]=4;
sir[j+4]=6;
count+=4;
}
else
if (sir[j]==6)
{
for(k=count;k>=j+1;k--)
{
sir[k+2]=sir[k];
}
sir[j]=1;
sir[j+1]=2;
sir[j+2]=4;
count+=2;
}
else
ok=0;
}
if (a[j]==2)
{
if (sir[j]==4) sir[j]=a[j];
else
if (sir[j]==5)
{
for(k=count;k>=j+1;k--)
{
sir[k+1]=sir[k];
}
sir[j]=2;
sir[j+1]=5;
count+=1;
}
else
if (sir[j]==6) sir[j]=a[j];
else ok=0;
}
if (a[j]==3)
{
if (sir[j]==4) sir[j]=a[j];
else
if (sir[j]==6)
{
for(k=count;k>=j+1;k--)
{
sir[k+2]=sir[k];
}
sir[j]=3;
sir[j+1]=5;
sir[j+2]=6;
count+=2;
}
else ok=0;
}
}
if (!sir[l+1])
printf("%ld\n",ok);
else
printf("0\n");
}
printf("\n");
}