Pagini recente » Cod sursa (job #1290536) | Cod sursa (job #1126547) | Cod sursa (job #2556091) | Cod sursa (job #1082237) | Cod sursa (job #3233806)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int v[10006];
int n, m, i;
int A(), B(), C();
int A(){
if(i == m + 1){
return 0;
}
if(v[i] == 1 || v[i] == 2 || v[i] == 3){
i++;
return 1;
} else return 0;
}
int B(){
if(i == m + 1){
return 0;
}
if(v[i] == 2){
i++;
return B();
}
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();
} else return 0;
}
int C(){
if(i == m + 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++;
int aux = B();
if(aux == 0) return 0;
return C();
}
}
}
int main(){
f >> n;
while(n--){
f >> m;
for(int j = 1; j <= m; j++){
f >> v[j];
}
i = 1;
int sol = A();
if(sol == 1 && i == m + 1){
g << "1\n";
continue;
}
i = 1;
sol = B();
if(sol == 1 && i == m + 1){
g << "1\n";
continue;
}
i = 1;
sol = C();
if(sol == 1 && i == m + 1){
g << "1\n";
continue;
}
g << "0\n";
}
}