Pagini recente » Cod sursa (job #973399) | Cod sursa (job #1287764) | Profil mihutu7 | Monitorul de evaluare | Cod sursa (job #205640)
Cod sursa(job #205640)
#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) return 1;
if(pos+2==l&&a[pos]==1&&a[pos+1]==2&&a[pos+2]>0&&a[pos+2]<4){pos+=2; 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++){
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;
}