Pagini recente » Cod sursa (job #2666562) | Cod sursa (job #358770) | Cod sursa (job #385779) | Cod sursa (job #770908) | Cod sursa (job #2927350)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("perle.in");
ofstream out("perle.out");
bool A(), B(), C(), verify;
int v[100010];
int nr, n, i;
bool A()
{
if (i > n)
return 0;
if (v[i] == 1 || v[i] == 2 || v[i] == 3)
{
i++;
return 1;
}
else return 0;
}
bool B()
{
if (i > n)
return 0;
if (v[i] == 2)
{
i++;
return B();
}
else if (v[i] == 1)
{
i++;
int a = A();
if (a == 0)
return 0;
if (v[i] != 3)
return 0;
i++;
a = A();
if (a == 0)
return 0;
return C();
}
else return 0;
}
bool C()
{
if (i > n)
return 0;
if (v[i] == 2)
{
i++;
return 1;
}
else if (v[i] == 1)
{
i++;
if (v[i] != 2)
{
i++;
return 0;
}
else
{
i++;
return A();
}
}
else
{
i++;
int b = B();
if (b == 0)
return 0;
return C();
}
}
int main()
{
in >> nr;
for (in >>nr ; nr--;)
{
in >> n;
for (i = 1; i <= n; i++)
in >> v[i];
i = 1;
verify = A();
if (verify == true && i > n)
{
out << true << '\n';
continue;
}
i = 1;
verify = B();
if (verify == true && i > n)
{
out << true << '\n';
continue;
}
i = 1;
verify = C();
if (verify == true && i > n)
{
out << true << '\n';
continue;
}
out << false << '\n';
}
return 0;
}