Pagini recente » Cod sursa (job #892948) | Cod sursa (job #1477099) | Cod sursa (job #1469409) | Cod sursa (job #1299370) | Cod sursa (job #2974140)
#include <fstream>
#include <cmath>
using namespace std;
bool b();
bool c();
bool a();
int i, n;
int s[10001];
bool a()
{
if (i <= n)
{
i++;
return 1;
}
return 0;
}
bool b()
{
if (i <= n and s[i] != 3)
{
if (s[i] == 1)
{
i++;
bool ok = a();
ok &= (s[i++] == 3);
ok &= a();
ok &= c();
return ok;
}
i++;
return b();
}
return 0;
}
bool c()
{
if (i > n)
return 0;
if (s[i] == 2)
{
return (i == n);
}
if (s[i] == 3)
{
i++;
return b() and c();
}
if (s[i] == 1 and s[i + 1] == 2)
{
i += 2;
return a();
}
return 0;
}
int main()
{
ifstream cin("perle.in");
ofstream cout("perle.out");
int t, i;
cin >> t;
while (t--)
{
cin >> n;
for (i = 1; i <= n; i++)
cin >> s[i];
s[n + 1] = s[n + 2] = s[n + 3] = 0;
if (n == 1)
{
cout << "1\n";
continue;
}
bool ans = 0;
if (s[1] == 1)
{
if (n == 3)
ans = c();
else
ans = b();
}
else if (s[1] == 2)
ans = b();
else
ans = c();
cout << ans << "\n";
}
}