Pagini recente » Rating Spinu Dragos (dragonelul) | Rating adrian (bigsarpe) | Cod sursa (job #3293774) | Rating Liviu Cepan (celiv) | Cod sursa (job #3273566)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int A();
int B();
int C();
int v[10001];
int n, i, r, l;
int main() {
fin >> n;
for(int k = 1; k <= n; k++) {
fin >> l;
for(int j = 1; j <= l; j++)
fin >> v[j];
i = 1;
r = A();
if(r == 1 && i == l + 1) {
fout << 1 << endl;
continue;
}
i = 1;
r = B();
if(r == 1 && i == l + 1) {
fout << 1 << endl;
continue;
}
i = 1;
r = C();
if(r == 1 && i == l + 1) {
fout << 1 << endl;
continue;
}
fout << 0 << endl;
}
return 0;
}
int A() {
if(i == l + 1)
return 0;
if(v[i] == 1 || v[i] == 2 || v[i] == 3) {
i++;
return 1;
}
return 0;
}
int B() {
int aux;
if(i == l + 1)
return 0;
if(v[i] == 2) {
i++;
return B();
}
else
if(v[i] == 1) {
i++;
aux = A();
if(!aux)
return 0;
if(v[i] != 3)
return 0;
i++;
aux = A();
if(!aux)
return 0;
return C();
}
return 0;
}
int C() {
int aux;
if(i == l + 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 {
i++;
aux = B();
if(!aux)
return 0;
return C();
}
}