Pagini recente » Cod sursa (job #2736586) | Cod sursa (job #2898224) | Cod sursa (job #2504159) | Cod sursa (job #1754021) | Cod sursa (job #213583)
Cod sursa(job #213583)
#include<fstream>
using namespace std;
int a[10001],pos,l;
int tryb();
int tryc();
int tryb(){
if(pos>l) return 0;
if(a[pos]!=2&&a[pos]!=1) return 0;
if(a[pos]==2){++pos; return tryb();}
if(a[pos]==1){
if(pos+4>l) return 0;
if(a[pos+1]<1||a[pos+1]>3) return 0;
if(a[pos+2]!=3) return 0;
if(a[pos+3]<1||a[pos+3]>3) return 0;
pos=pos+4;
return tryc();
}
}
int tryc(){
if(pos<=l&&a[pos]==2){pos++; return 1;}
if(pos+2<=l&&a[pos]==1&&a[pos+1]==2&&a[pos+2]>0&&a[pos+2]<4){pos+=3; return 1;}
if(pos+6>l) return 0;
if(a[pos]!=3) return 0;
++pos;
if(tryb())
return tryc();
else return 0;
}
int main(){
int n,i,j, r;
ifstream f("perle.in");
ofstream g("perle.out");
f>>n;
for(i=0;i<n;i++){
pos=0;
f>>l;
for(j=0;j<l;j++)
f>>a[j];
--l;
if(l==0&&a[0]>0&&a[0]<4) r=1;
else r=0;
if(!r) r=r||(tryb()&&(pos>=l));
if(!r) r=r||(tryc()&&pos>=l);
g<<r<<'\n';
}
g.close();
f.close();
return 0;
}