Pagini recente » Cod sursa (job #416508) | Cod sursa (job #2062338) | Cod sursa (job #761115) | Cod sursa (job #777124) | Cod sursa (job #2533073)
#include <fstream>
std::ifstream f("perle.in");
std::ofstream g("perle.out");
/*
A -> 1 | 2 | 3
B -> 2B | 1A3AC
C -> 2 | 3BC | 12A
*/
const int NMAX = 10'100;
int n,v[NMAX],i,q;
bool A(),B(),C();
bool A(){
if(i > n)
return false;
if(v[i] == 1 || v[i] == 2 || v[i] == 3){
i++;
return true;
}
return false;
}
bool B(){
if(i > n)
return false;
if(v[i] == 2){
i++;
return B();
}
if(v[i] == 1){
i++;
bool r = A();
if(!r)
return false;
if(v[i] != 3)
return false;
if(v[i] == 3){
i++;
r = A();
if(!r)
return false;
return C();
}
}
return false;
}
bool C(){
if(i > n)
return false;
if(v[i] == 2){
i++;
return true;
}
if(v[i] == 3){
i++;
bool r = B();
if(!r)
return false;
return C();
}
if(v[i] == 1 && v[i + 1] == 2){
i += 2;
return A();
}
return false;
}
int main(){
f >> q;
while(q--){
f >> n;
for(int i = 1;i <= n;++i)
f >> v[i];
i = 1;
if(A() && i > n){
g << 1 << '\n';
continue;
}
i = 1;
if(B() && i > n){
g << 1 << '\n';
continue;
}
i = 1;
if(C() && i > n){
g << 1 << '\n';
continue;
}
g << 0 << '\n';
}
return 0;
}