Pagini recente » Cod sursa (job #913347) | Cod sursa (job #2465358) | Cod sursa (job #56176) | Cod sursa (job #2366527) | Cod sursa (job #2358739)
#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;
int 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&&v[poz]!=2){
return 0;
}
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){
return 1;
}
return 0;
}
int 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 && v[poz]!=2){
return 0;
}
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){
return 1;
}
return 0;
}
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){
fout<<"1\n";
continue;
}
k=1;s[1]=2;poz=1;
int ok=perlaB();
if(ok==0){
k=1;s[1]=3;poz=1;
ok=perlaC();
fout<<ok<<'\n';
}
else
fout<<1<<'\n';
/*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;
}