Pagini recente » Cod sursa (job #1192687) | Cod sursa (job #566045) | Cod sursa (job #3253477) | Cod sursa (job #337842) | Cod sursa (job #76884)
Cod sursa(job #76884)
#include <stdio.h>
int v[20000],k,l,n,i,j,a[10000],t ;
int functie()
{
n=0;k=1;
while (k<=l)
{if ((a[i]==4)&&(n>0)) {for (j=1;j<n;j++) a[j]=a[j+1];
n--;
k++;
}
else
if (v[k]==3) if ((n==0)||(a[i]==6))
if (n==0) {a[1]=5;a[2]=6;n=2;k++;}
else {for (j=n;j>=1;j--) a[j+1]=a[j];
a[1]=5;
n++;
k++;
}
else if (a[1]!=3) return 0;
else {for (j=1;j<n;j++) a[j]=a[j+1];
n--;
k++;
}
else
if (v[k]==1) if ((k==l-2)&&(v[k+1]==2)&&(n==1)&&(a[1]==6)) return 1;
else
if (n==0) {n=4;a[1]=4;a[2]=3;a[3]=4;a[4]=6;k++;}
else
if (a[1]==1) {for (j=1;j<n;j++) a[j]=a[j+1];
n--;
k++;
}
else
if (a[1]==6) {for (j=n;j>=2;j--) a[j+1]=a[j];
n++;
k++;
a[1]=2;
a[2]=4;
}
else
if (a[1]==5) {for (j=n;j>=2;j--) a[j+3]=a[j];
n=n+3;
a[1]=4;a[2]=3;a[3]=4;a[4]=6;
k++;
}
else return 0;
else
if (v[k]==2) if ((k==l)&&(n==1)&&(a[1]==6)) return 1;
else
if (n==0)/* {while (v[k]==2) k++;
n=5;
a[1]=1;a[2]=4;a[3]=3;a[4]=4;a[5]=6;
}*/
{k++; n=1;a[1]=5;}
else
if (a[1]==2) {for (j=1;j<n;j++) a[j]=a[j+1];
n--;
k++;
}
else
/*if (a[1]==5)
{while (v[k]==2) k++;
for (j=n;j>=2;j--) a[j+4]=a[j];
n=n+4;
a[1]=1;a[2]=4;a[3]=3;a[4]=4;a[5]=6;
} */
if (a[1]==5) {k++;}
else
if (a[1]==6) {for (j=1;j<n;j++) a[j]=a[j+1];
n--;
k++;
}
else return 0;
}
if (n==0) return 1;
else return 0;
}
int main()
{FILE *fin,*fout;
fin=fopen("perle.in","r");
fout=fopen("perle.out","w");
fscanf(fin,"%d",&t);
for (i=1;i<=t;i++)
{fscanf(fin,"%d",&l);
for (j=1;j<=l;j++)
fscanf(fin,"%d",&v[j]);
if (l>1) {fprintf(fout,"%d",functie());
fprintf(fout,"\n");
}
else {fprintf(fout,"%d",1);
fprintf(fout,"\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}