Pagini recente » Cod sursa (job #1192525) | Cod sursa (job #1502879) | Cod sursa (job #2644935) | Cod sursa (job #1355536) | Cod sursa (job #1119131)
# include <cstdio>
const int N = 10000;
int v [N + 1];
int n, t, p;
void init ()
{
freopen ("perle.in", "r", stdin);
freopen ("perle.out", "w", stdout);
scanf ("%d", & t);
}
void citeste ()
{
int i;
scanf ("%d", & n);
for (i = 1; i <= n; i ++)
scanf ("%d", & v [i]);
}
bool a ()
{
if (p <= n)
{
p ++;
return true;
}
p ++;
return false;
}
bool c ();
bool b ()
{
if (p > n)
return false;
if (v [p] == 2)
{
p ++;
return b ();
}
if (v [p] == 1)
{
p ++;
if (a ())
if (v [p] == 3)
{
p ++;
if (a ())
return c ();
}
}
return false;
}
bool c ()
{
if (p > n)
return false;
if (v [p] == 2)
{
p ++;
return true;
}
if (v [p] == 3)
{
p ++;
if (b ())
return c ();
}
p ++;
if (v [p] == 2)
{
p ++;
return a ();
}
return false;
}
void rezolva ()
{
p = 1;
if (a ())
if (p == n + 1)
{
printf ("1\n");
return;
}
p = 1;
if (b ())
if (p == n + 1)
{
printf ("1\n");
return;
}
p = 1;
if (c ())
if (p == n + 1)
{
printf ("1\n");
return;
}
printf ("0\n");
}
int main ()
{
int i;
init ();
for (i = 1; i <= t; i ++)
{
citeste ();
rezolva ();
}
return 0;
}