Pagini recente » Borderou de evaluare (job #156978) | Cod sursa (job #366088) | Cod sursa (job #3125947) | Cod sursa (job #1169472) | Cod sursa (job #448841)
Cod sursa(job #448841)
#include <cstdio>
int v[1<<14],lung;
char s[1<<17];
int perlac(int);
int perlab(int k)
{
if(v[k]==2)
return perlab(k+1);
if(v[k]==1 && v[k+2]==3)
return perlac(k+4);
return perlac(k+1);
}
int perlac(int k)
{
if(v[k]==2)
{
if(k==lung-1)
return 1;
return perlac(k+1);
}
if(v[k]==1 && v[k+1]==2)
{
if(k+3==lung)
return 1;
return perlac(k+3);
}
if(v[k]==3)
return perlab(k+1);
return 0;
}
void citire()
{
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
int n;
scanf("%d\n",&n);
for(int i=0; i<n; i++)
printf("%d\n",rez());
}
void work()
{
lung=0;
gets(s);
int k=0,p=0,i=0;
for(;s[k]!=' ';++k)
lung=lung*10+(s[k]-'0');
for(++k;s[k]!='\n';++k)
{
if(s[k]==' ')
{
v[++i]=p,
p=0;
}
else
p=p*10+(s[k]-'0');
}
}
int rez()
{
read();
if(lung==1)
return 1;
if(lung==2)
return 0;
if(v[0]==3)
return perlac(0);
return perlab(0);
}
int main()
{
citire();
}