Pagini recente » Cod sursa (job #2598422) | Cod sursa (job #2683222) | Cod sursa (job #1172559) | Cod sursa (job #3169785) | Cod sursa (job #3294212)
#include <bits/stdc++.h>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
const int MAX_LEN = 10'000;
int v[MAX_LEN + 1];
int n, t, i;
int A(), B(), C();
int A() {
if (i == n + 1)
return 0;
if (v[i] == 1 || v[i] == 2 || v[i] == 3) {
i++;
return 1;
}
else
return 0;
}
int B() {
if (i == n + 1)
return 0;
if (v[i] == 2) {
i++;
return B();
}
else
if (v[i] == 1) {
i++;
int aux = A();
if (aux == 0)
return 0;
if (v[i] != 3)
return 0;
i++;
aux = A();
if (aux == 0)
return 0;
return C();
}
return 0;
}
int C() {
if (i == n + 1)
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
if (v[i] == 3) {
i++;
int aux = B();
if (aux == 0)
return 0;
return C();
}
}
int main() {
f >> t;
for (; t > 0; t--) {
f >> n;
for (i = 1; i <= n; i++)
f >> v[i];
i = 1;
int rez = A();
if (rez && i == n + 1) {
g << "1\n";
continue;
}
i = 1;
rez = B();
if (rez && i == n + 1) {
g << "1\n";
continue;
}
i = 1;
rez = C();
if (rez && i == n + 1) {
g << "1\n";
continue;
}
g << "0\n";
}
f.close();
g.close();
return 0;
}