Pagini recente » Rating Nechita Roberta Gabriela (RobertaNechita) | Rating Chirilov Radu (Radiance322) | Rating Petrisor Mihai (quelno) | Cod sursa (job #2205760)
#include <cstdio>
using namespace std;
FILE *f = fopen("perle.in","r");
FILE *g = fopen("perle.out","w");
int V[10001],N,ind;
int T;
bool A();
bool B();
bool C();
bool A(){
if(ind <= N && V[ind] == 1 || V[ind] == 2 || V[ind] == 3){
ind++;
return 1;
}
return 0;
}
bool B(){
if(ind <= N){
if(V[ind] == 2){
ind++;
return B();
}
else{
if(V[ind] == 1){
ind++;
if(A()){
if(ind <= N && V[ind] == 3){
ind++;
if(A()){
return C();
}
else{
return 0;
}
}
else{
return 0;
}
}
else{
return 0;
}
}
else{
return 0;
}
}
}
else{
return 0;
}
}
bool C(){
if(ind <= N && V[ind] == 2){
ind++;
return 1;
}
if(ind <= N && V[ind] == 3){
ind++;
if(!B()){
return 0;
}
return C();
}
if(ind <= N && V[ind] == 1){
ind++;
if(ind <= N && V[ind] == 2){
ind++;
return A();
}
}
return 0;
}
int main(){
fscanf(f,"%d",&T);
while(T--){
fscanf(f,"%d",&N);
for(int i = 1;i <= N;i++){
fscanf(f,"%d",&V[i]);
}
ind = 1;
if(A() && ind > N){
fputs("1\n",g);
continue;
}
ind = 1;
if(B() && ind > N){
fputs("1\n",g);
continue;
}
ind = 1;
if(C() && ind > N){
fputs("1\n",g);
continue;
}
fputs("0\n",g);
}
fclose(f);
fclose(g);
return 0;
}