Pagini recente » Cod sursa (job #17314) | **** | Mihnea Andreescu | fmi-no-stress-7/solutii | Cod sursa (job #2935856)
#include <bits/stdc++.h>
using namespace std;
#define LMAX 10005
int arr[LMAX], idx, n;
bool solve_a();
bool solve_b();
bool solve_c();
bool solve_a() {
if (idx > n)
return false;
++idx;
return true;
}
bool solve_b() {
if (idx > n)
return false;
if (arr[idx] == 1) {
++idx;
if (!solve_a())
return false;
if (idx > n || arr[idx] != 3)
return false;
++idx;
return solve_a() && solve_c();
}
if (arr[idx] == 2) {
++idx;
return solve_b();
}
return false;
}
bool solve_c() {
if (idx > n)
return false;
if (arr[idx] == 1) {
++idx;
if (idx > n || arr[idx] != 2)
return false;
++idx;
return solve_a();
}
if (arr[idx] == 2) {
++idx;
return true;
}
++idx;
return solve_b() && solve_c();
}
int main() {
freopen("perle.in", "r", stdin);
freopen("perle.out", "w", stdout);
int T;
cin >> T;
for (int t = 1; t <= T; ++t) {
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> arr[i];
idx = 1;
if (solve_a() && idx > n) {
cout << "1\n";
continue;
}
idx = 1;
if (solve_b() && idx > n) {
cout << "1\n";
continue;
}
idx = 1;
if (solve_c() && idx > n) {
cout << "1\n";
continue;
}
cout << "0\n";
}
}