Pagini recente » Istoria paginii utilizator/tudor.gtm | Cod sursa (job #981943) | Cod sursa (job #779931) | Cod sursa (job #1977589) | Cod sursa (job #209939)
Cod sursa(job #209939)
#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)
return p+1;
if(v[p]==1&&v[p+1]==2&&n>=p+2)
return p+3;
if(v[p]!=3)
return 0;
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)
return 0;
return(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){
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);
for(i=1;i<=n;i++)
v[i]=0;
}
fclose(f);
fclose(g);
return 0;
}