Pagini recente » Cod sursa (job #1429410) | Cod sursa (job #1139296) | Cod sursa (job #399663) | Cod sursa (job #1986204) | Cod sursa (job #475998)
Cod sursa(job #475998)
#include<fstream>
using namespace std;
bool test();
int test1(int pos);
int test2(int pos);
int n, l, v[10001];
int main()
{
ifstream fin("perle.in");
ofstream fout("perle.out");
fin >> n;
while (n--)
{
fin >> l;
for (int i = 1; i <= l; ++i)
fin >> v[i];
fout << test() << '\n';
}
}
bool test()
{
if (l == 1) return true;
int c1 = test1(1);
int c2 = test2(1);
return c1 > l || c2 > l;
}
int test1(int pos)
{
if (pos > l) return 0;
if (v[pos] == 2 && l > pos) return test1(pos + 1);
if (v[pos] == 1 && v[pos + 2] == 3 && l > pos + 3) return test2(pos + 4);
return 0;
}
int test2(int pos)
{
if (pos > l) return 0;
if (v[pos] == 2 && l >= pos) return pos + 1;
if (v[pos] == 1 && v[pos + 1] == 2 && l >= pos + 2) return pos + 3;
//3BC
if (v[pos] == 3)
{
int aux = test1(pos + 1);
if (aux != 0) return test2(aux);
}
return 0;
}