Pagini recente » Cod sursa (job #2545261) | Cod sursa (job #31621) | Cod sursa (job #1589212) | Cod sursa (job #379528) | Cod sursa (job #445405)
Cod sursa(job #445405)
#include <cstdio>
#define MAX 10005
int V[MAX], L, T;
int perlab(int);
int perlac(int);
int solve(void);
void citire(void);
int main()
{
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
scanf("%d\n",&T);
while (T--)
printf("%d\n",solve());
}
void citire()
{
scanf("%d",&L);
for (int i = 0; i < L; ++i) scanf("%d",&V[i]);
}
int solve() // A -> 1 | 2 | 3
{
citire();
if(L == 1)
return 1;
if(L == 2)
return 0;
if(V[0] == 3)
return perlac(0);
return perlab(0);
}
int perlab(int K) // B -> 2B | 1A3AC
{
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) // C -> 2 | 3BC | 12A
{
if(V[K] == 2)
{
if(K == L - 1)
return 1;
return perlac(K + 1);
}
if(V[K] == 1 && V[K + 1] == 2)
{
if(K + 3 == L)
return 1;
return perlac(K + 3);
}
if(V[K] == 3)
return perlab(K + 1);
return 0;
}