Pagini recente » Cod sursa (job #3303095) | Cod sursa (job #3336170) | Cod sursa (job #3354960) | Cod sursa (job #3314348) | Cod sursa (job #3334669)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const int MAXN = 10002;
int T, N;
int v[MAXN];
bool A(int& i);
bool B(int& i);
bool C(int& i);
bool A(int& i) {
if (i > N) {
return false;
}
++i;
return true;
//if (v[i] == 1 || v[i] == 2 || v[i] == 3) {
// ++i;
// return true;
//}
//return false;
}
bool B(int& i) {
if (i > N || v[i] == 3) return false;
if (v[i] == 2) {
++i;
return B(i);
}
++i;
if (!A(i)) return false;
if (v[i] != 3) return false;
++i;
if (!A(i)) return false;
return C(i);
}
bool C(int& i) {
if (i > N) return false;
if (v[i] == 2) {
++i; return true;
}
else if (v[i] == 3) {
++i;
if (!B(i)) return false;
return C(i);
}
else {
++i;
if (v[i] != 2) return false;
++i;
return A(i);
}
}
int main()
{
fin >> T;
for (int t = 0; t < T; ++t) {
fin >> N;
for (int i = 1; i <= N; ++i) {
fin >> v[i];
}
int i = 1;
if (A(i) && i == N + 1) {
fout << "1\n";
continue;
}
i = 1;
if (B(i) && i == N + 1) {
fout << "1\n";
continue;
}
i = 1;
if (C(i) && i == N + 1) {
fout << "1\n";
continue;
}
fout << "0\n";
}
return 0;
}