Pagini recente » Cod sursa (job #2627566) | Cod sursa (job #2927282) | Cod sursa (job #918766) | Cod sursa (job #2031549) | Cod sursa (job #53639)
Cod sursa(job #53639)
/* Ivan Nicolae - Bucuresti */
#include <stdio.h>
#include <string.h>
#define NMAX (10007+100)
#define _fin "perle.in"
#define _fout "perle.out"
int i,n,A[NMAX],m;
/* A=4 B=5 C=6
4 -> 1 | 2 | 3
5 -> 25 | 14346
6 -> 2 | 356 | 124 */
int B_unu(int n)
{
if (A[n-1]==2 && A[n]==5)
return 1;
return 0;
}
int B_doi(int n)
{
if ((A[n]==6 || A[n]==2) && (A[n-1]==1 || A[n-1]==2 || A[n-1]==3 || A[n-1]==4)
&& A[n-2]==3 && (A[n-3]==1 || A[n-3]==2 || A[n-3]==3 || A[n-3]==4) && A[n-4]==1)
return 1;
return 0;
}
int C_doi(int n)
{
if ((A[n]==6 || A[n]==2) && A[n-1]==5 && A[n-2]==3)
return 1;
return 0;
}
int C_trei(int n)
{
if ((A[n]==1 || A[n]==2 || A[n]==3 || A[n]==4) && A[n-1]==2 && A[n-2]==1)
return 1;
return 0;
}
void Deca_B_unu(int poz)
{
int i;
for (i=poz;i<=n;i++)
A[i]=A[i+1];
A[poz-1]=5; n--;
}
void Deca_B_doi(int poz)
{
int i;
for (i=poz-3;i<=n;i++)
A[i]=A[i+4];
A[poz-4]=5; n-=4;
}
void Deca_C_doi(int poz)
{
int i;
for (i=poz-1;i<=n;i++)
A[i]=A[i+2];
A[poz-2]=6; n-=2;
}
void Deca_C_trei(int poz)
{
int i;
for (i=poz-1;i<=n;i++)
A[i]=A[i+2];
A[poz-2]=6; n-=2;
}
void ReadData(void)
{
int i,j;
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
scanf("%d",&m);
for (int step=1;step<=m;step++)
{
memset(A,0,sizeof(A));
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&A[i]);
while (n != 1)
{
int gasit=0;
for (j=n;j>=1/* && !gasit */;j--)
{
if (B_unu(j))
{ Deca_B_unu(j); gasit=1;}
if (B_doi(j))
{ Deca_B_doi(j); gasit=1;}
if (C_doi(j))
{ Deca_C_doi(j); gasit=1;}
if (C_trei(j))
{ Deca_C_trei(j); gasit=1;}
}
if (!gasit)
break;
}
if (n==1)
printf("1\n");
else printf("0\n");
}
fclose(stdin);
fclose(stdout);
}
int main()
{
ReadData();
return 0;
}