Pagini recente » Borderou de evaluare (job #1567395) | Cod sursa (job #1652974) | Cod sursa (job #1469826) | Cod sursa (job #1700041) | Cod sursa (job #1597669)
#include <fstream>
using namespace std;
bool c(int *v, int pos, int size);
bool b(int *v, int pos, int size)
{
if (pos > size)
{
return false;
}
if (v[pos] == 2)
{
return b(v, pos + 1, size);
}
if (v[pos] == 1 && v[pos + 2] == 3)
{
return c(v, pos + 4, size);
}
return false;
}
bool c(int *v, int pos, int size)
{
if (pos > size)
{
return false;
}
if (v[pos] == 3)
{
return b(v, pos + 1, size) && c(v, pos + 2, size);
}
else if (v[pos] == 2)
{
return pos == size;
}
else if (v[pos] == 1 && v[pos + 1] == 2)
{
return pos+2 == size;
}
}
int check(int *v, int l)
{
int result = 0;
if (l == 1)
{
if (v[l] == 1 || v[l] == 2 || v[l] == 3)
{
result = 1;
}
}
else
{
result = b(v, 1, l) || c(v, 1, l);
}
return result;
}
int main()
{
int n, V[10002], L;
ifstream f("perle.in");
ofstream g("perle.out");
f >> n;
for (int i = 1; i <= n; i++)
{
f >> L;
for (int j = 1; j <= L; j++)
{
f >> V[j];
}
g << check(V, L) << "\n";
}
f.close();
g.close();
return 0;
}