Cod sursa(job #2565979)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 2 martie 2020 18:11:42
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<bits/stdc++.h>
using namespace std;

const int NMAX=10005;
int p[NMAX],i,n,nr;

int B();
int C();

int B(){
	if(p[i]==2){
		i++;
		return B();
	}
	else
        if(p[i]==1){
            if(p[i+2]==3){
                i+=4;
                return C();
            }
            return 0;
        }
	return 0;
}

int C(){
	if(p[i]==2 && (i==n || nr))
        return 1;
	else
        if(p[i]==1 && p[i+1]==2 && (i+2==n||nr)){
            i+=2;
            return 1;
        }
        else if(p[i]==3){
            nr++;
            i++;
            int a=B();
            nr--;
            i++;
            int b=C();
            return a&&b;
        }
    return 0;
}

int main(){
	freopen("perle.in","r",stdin);
	freopen("perle.out","w",stdout);
	int T;
	scanf("%d\n", &T);
	for(int k=1;k<=T;k++){
		scanf("%d ", &n);
		for(int q=1;q<=n;q++)
            scanf("%d ", &p[q]);
		i=1;
		if(n==1){
		    printf("1\n");
            p[1]=0;
            continue;
        }
		if(p[1]==1){
			if(n==3)
                printf("%d\n", C());
			else
                printf("%d\n", B());
		}
		else
            if(p[1]==2)
                printf("%d\n", B());
            else
                printf("%d\n", C());
		for(int q=1;q<=n;q++)
            p[q]=0;
	}
	return 0;
}