Cod sursa(job #2279607)
Utilizator | Data | 9 noiembrie 2018 20:14:18 | |
---|---|---|---|
Problema | Perle | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.01 kb |
#include<fstream>
using namespace std;
ifstream cin("perle.in");
ofstream cout("perle.out");
int st[2][10005],niv[2],valid[2],n,l,x;
int main(){
cin>>n;
while(n--){
cin>>l;
if(l==1){
cin>>x;
cout<<"1\n";
}
else{
valid[0]=valid[1]=1;
niv[0]=niv[1]=1;
st[0][1]=5;
st[1][1]=6;
while(l--){
cin>>x;
for(int i=0;i<2;i++){
if(valid[i]){
if(st[i][niv[i]]<4){
valid[i]=(st[i][niv[i]]==x);
--niv[i];
}
else if(st[i][niv[i]]==4){
--niv[i];
}
else if(st[i][niv[i]]==5){
if(x==3) valid[i]=0;
else if(x==1){
--niv[i];
st[i][++niv[i]]=6;
st[i][++niv[i]]=4;
st[i][++niv[i]]=3;
st[i][++niv[i]]=4;
}
}
else{
if(x==2) --niv[i];
else if(x==1){
--niv[i];
st[i][++niv[i]]=4;
st[i][++niv[i]]=2;
}
else{
--niv[i];
st[i][++niv[i]]=6;
st[i][++niv[i]]=5;
}
}
}
if(!niv[i] && l) valid[i]=0;
}
}
if((!niv[0] && valid[0])||(!niv[1] && valid[1])) cout<<"1\n";
else cout<<"0\n";
}
}
}