Pagini recente » Cod sursa (job #922045) | Cod sursa (job #364837) | Cod sursa (job #2564849) | Cod sursa (job #1034495) | Cod sursa (job #190906)
Cod sursa(job #190906)
#include <stdio.h>
int v[10002], vtmp[10002], ok;
int rezolvaB(int);
int rezolvaC(int);
int rezolvaB(int in)
{
int ok=0;
if (in>=v[0]) return 0;
if (v[in]==2)
{
vtmp[in]=2;
vtmp[in+1]=5;
ok=rezolvaB(in+1);
}
else if (v[in]==1)
{
vtmp[in]=1;
vtmp[in+1]=4;
vtmp[in+2]=3;
vtmp[in+3]=4;
vtmp[in+4]=6;
ok=rezolvaC(in+4);
}
return ok;
}
int rezolvaC(int in)
{
int ok=0, i;
if (in>=v[0]) return 0;
if (v[in]==2 && in==v[0])
{
ok=1;
}
else if (v[in]==1)
{
vtmp[in]=1;
vtmp[in+1]=2;
vtmp[in+2]=4;
ok=1;
for (i=1; i<=v[0]; i++)
if (v[i]!=vtmp[i] && vtmp[i]!=4) ok=0;
}
else if (v[in]==3)
{
;
}
return ok;
}
void rezolva()
{
ok=0;
if (v[0]==1)
{
ok=1;
return;
}
else if (v[0]==2)
{
ok=0;
return;
}
else if (v[0]==3)
{
ok=0;
if (v[1]==1 && v[2]==2 && v[3]==3) ok=1;
return;
}
else
{
if (v[1]==2)
{
ok=rezolvaB(1);
return;
}
else if (v[1]==3)
{
ok=rezolvaC(1);
return;
}
else
{
rezolvaB(1);
rezolvaC(1);
}
}
}
int main()
{
freopen("perle.in", "rt", stdin);
freopen("perle.out", "wt", stdout);
int n, i, j;
scanf("%d\n", &n);
for (i=0; i<n; i++)
{
scanf("%d ", &v[0]);
for (j=1; j<=v[0]; j++) scanf("%d ", &v[j]);
rezolva();
printf("%d\n", ok);
scanf("\n");
}
return 0;
}