Pagini recente » Cod sursa (job #1021917) | Borderou de evaluare (job #103654) | Cod sursa (job #1185020) | Cod sursa (job #157529) | Cod sursa (job #209937)
Cod sursa(job #209937)
#include<stdio.h>
#include<algorithm>
using namespace std;
int sol,v[11000],T,t,n,i;
int rezB(int p);
int rezC(int p){
if(v[p]==2){
if(n+1!=p+1)return 0;
return p+1;
}
if(v[p]==1 && v[p+1]==2 ){
if(n+1!=p+3)return 0;
return p+3;
}
if(v[p]==3){
p=rezB(p+1);
if(p>n)
return 0;
return(rezC(p));
}
}
int rezB(int p){
for(;v[p]==2;p++)
if(p>=n)
return 0;
if(v[p]==1&&v[p+2]==3&&n>=p+4)
rezC(p+4);
}
int main(){
FILE *f=fopen("perle.in","r");
FILE *g=fopen("perle.out","w");
fscanf(f,"%d",&T);
for(t=1;t<=T;t++){
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
sol=0;
if(n==1)
sol=n+1;
else{
if(v[1]==1){
if(n==3&&v[2]==2)//12A
sol=n+1;
if(n>=5&&v[3]==3){
//incep cu B;
sol=rezC(5);
}
}
if(v[1]==2){
sol=rezB(1);
}
if(v[1]==3){
sol=rezC(1);
}
}
if(sol==n+1)
sol=1;
else
sol=0;
fprintf(g,"%d\n",sol);
}
fclose(f);
fclose(g);
return 0;
}