Pagini recente » Cod sursa (job #2649194) | Cod sursa (job #772325) | Cod sursa (job #264689) | Cod sursa (job #1798332) | Cod sursa (job #2358722)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int n,m,i,v[10005],s[10005],k,poz,ok,q;
void perlaB(){
ok=0;
while(k){
if(s[k]==2){ ///perla B
k--;
if(v[poz]==1 && v[poz+2]==3 && poz<=n-5) {
s[++k]=3;
poz+=4;
}
else if(v[poz]==2 && poz<n){
poz++;
s[++k]=2;
}
}
else if(s[k]==3){
k--;
if(poz==n){
fout<<0<<'\n';
ok=1;
break;
}
else if(v[poz]==3){
s[++k]=3;
s[++k]=2;
poz++;
}
else if(v[poz]==1 && v[poz+1]==2){
poz+=3;
}
else if(v[poz]==2){
poz++;
}
}
}
if(poz==n+1){
fout<<1<<'\n';
return;
}
if(!ok)
fout<<0<<'\n';
}
void perlaC(){
ok=0;
while(k){
if(s[k]==2){ ///perla B
k--;
if(v[poz]==1 && v[poz+2]==3 && poz<=n-5) {
s[++k]=3;
poz+=4;
}
else{
poz++;
s[++k]=2;
}
}
else if(s[k]==3){
k--;
if(poz==n){
fout<<1<<'\n';
ok=1;
break;
}
else if(v[poz]==3){
s[++k]=3;
s[++k]=2;
poz++;
}
else if(v[poz]==1 && v[poz+1]==2){
poz+=3;
}
else if(v[poz]==2){
poz++;
}
}
}
if(poz==n+1){
fout<<1<<'\n';
return;
}
if(!ok)
fout<<0<<'\n';
}
int main ()
{
fin>>m;
for(q=1;q<=m;q++){
fin>>n;
memset(v,0,sizeof(v));
for(i=1;i<=n;i++)
fin>>v[i];
if(n==1 || (v[i]==1 && v[i+1]==2 && n==3))
fout<<1<<'\n';
else if(v[1]==2){
s[++k]=2;
poz=2;
perlaB();
}
else if(v[1]==1 && v[3]==3 && n>=5){
s[++k]=3;
poz=5;
perlaC();
}
else if(v[1]==3){
s[++k]=3;
s[++k]=2;
poz=2;
perlaB();
}
else
fout<<0<<'\n';
}
return 0;
}