Pagini recente » Cod sursa (job #1746985) | Cod sursa (job #1134232) | Cod sursa (job #848879) | Monitorul de evaluare | Cod sursa (job #1856469)
#include <cstdio>
#define MAXN 10001
using namespace std;
int s[MAXN], l;
int callC(int);
int callB(int pos)
{
if(s[pos] == 2)
if(pos+1 <= l)
return callB(pos+1);
if(s[pos] == 1)
if(pos+4 <= l && s[pos+2] == 3)
return callC(pos+4);
return l+2;
}
int callC(int pos)
{
if(s[pos] == 2 && pos == l)
return pos+1;
if(s[pos] == 3)
if(pos+2 <= l)
return callC(callB(pos+1));
if(s[pos] == 1)
if(pos+2 <= l && s[pos+1] == 2)
return pos+3;
return l+2;
}
int main()
{
freopen("perle.in", "r", stdin);
freopen("perle.out", "w", stdout);
int i, n;
scanf("%d", &n);
while(n--)
{
scanf("%d", &l);
for(i=1; i<=l; ++i)
scanf("%d", &s[i]);
if(l == 1) printf("1\n");
else printf("%d\n", (callB(1) == l+1 || callC(1) == l+1));
}
return 0;
}