Pagini recente » Cod sursa (job #2208022) | Cod sursa (job #1793142) | Cod sursa (job #310249) | Cod sursa (job #1560534) | Cod sursa (job #1466253)
#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
#include <climits>
#include <list>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
freopen("perle.in", "r", stdin);
freopen("perle.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
for (int i = 1; i <= t; i++) {
int n;
cin >> n;
int* v = new int[n + 1];
for (int i = 1; i <= n; i++) {
cin >> v[i];
}
if (n == 1) {
cout << "1\n";
continue;
}
int poz = 1, nC = 0;
while (poz <= n && v[poz] == 2) {
poz++;
}
if (poz == n || v[poz] == 3) {
goto tryC;
}
if (poz + 4 <= n && v[poz + 2] == 3) {
nC = 1;
poz += 4;
} else {
goto tryC;
}
while (poz <= n && nC != 0) {
nC--;
if (v[poz] == 2) {
poz++;
} else if (v[poz] == 1) {
if (v[poz + 1] != 2) {
goto tryC;
}
poz += 3;
} else {
if (v[poz] != 3) {
goto tryC;
}
poz++;
while(poz <= n && v[poz] == 2) {
poz++;
}
if (poz == n || v[poz] == 3) {
goto tryC;
}
if (poz + 4 <= n && v[poz + 2] == 3) {
poz += 4;
nC += 2;
} else {
goto tryC;
}
}
}
if (nC != 0 || poz - 1 != n) {
goto tryC;
}
cout << "1\n";
continue;
tryC:
poz = 1;
nC = 1;
while (poz <= n && nC != 0) {
nC--;
if (v[poz] == 1) {
if (v[poz + 1] != 2) {
goto fals;
}
poz += 3;
} else if (v[poz] == 2) {
poz++;
} else {
poz++;
while (poz <= n && v[poz] == 2) {
poz++;
}
if (poz == n || v[poz] == 3) {
goto fals;
}
if (poz + 4 <= n && v[poz + 2] == 3) {
poz += 4;
nC += 2;
} else {
goto fals;
}
}
}
if (nC != 0 || poz - 1 != n) {
goto fals;
}
cout << "1\n";
continue;
fals:
cout << "0\n";
}
return 0;
}