Pagini recente » Cod sursa (job #303302) | Cod sursa (job #1208096) | Cod sursa (job #1324239) | Cod sursa (job #539359) | Cod sursa (job #3197415)
#include <fstream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const int DIM = 10010;
int n, l, ind;
int v[DIM];
bool pearl(int type) {
if (type == 1) {
ind++;
return true;
} else if (type == 2) {
if (v[ind] == 2) {
ind++;
return pearl(2);
}
if (v[ind] == 1) {
ind++;
bool r1, r2, r3;
r1 = pearl(1);
if (v[ind] == 3) {
ind++;
r2 = pearl(1);
r3 = pearl(3);
return r1 && r2 && r3;
}
return false;
}
return false;
} else {
if (v[ind] == 2) {
ind++;
return true;
}
if (v[ind] == 3) {
ind++;
bool r1, r2;
r1 = pearl(2);
r2 = pearl(3);
return r1 && r2;
}
if (v[ind] == 1 && v[ind + 1] == 2) {
ind += 2;
return pearl(1);
}
return false;
}
}
int main() {
fin >> n;
for (int i = 1; i <= n; i++) {
fin >> l;
for (int j = 1; j <= l; j++)
fin >> v[j];
ind = 1;
bool p1 = pearl(1) && (ind == l + 1);
ind = 1;
bool p2 = pearl(2) && (ind == l + 1);
ind = 1;
bool p3 = pearl(3) && (ind == l + 1);
fout << (p1 || p2 || p3) << '\n';
}
return 0;
}