Pagini recente » Cod sursa (job #1719243) | Cod sursa (job #2929436) | Cod sursa (job #780247) | Cod sursa (job #1604059) | Cod sursa (job #2174140)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int i,n,k,N;
char j;
char a[10007],b[10007],c[10007];
bool V()
{
f>>n;
if(n==1)return 1;
for(i=0;i<n;++i)
{
f>>k;
a[i]=k;
}
//for(i=1;i<=n;++i)cout<<(int)a[i]<<' ';
//cout<<'\n';
if(a[0]==2)c[0]='b';
else if(a[0]==1){if(n!=3)c[0]='b';
else c[0]='c';}
else if(a[0]==3)c[0]='b';
else return 0;
k=1;i=0;j=0;
while(i<=n&&k>0)
{
--k;
j=c[k];
switch(j)
{
case 1:case 2:case 3:
b[i]=j;
if(b[i]!=a[i]){return 0;}
++i;break;
case 'a':b[i]=a[i];++i;break;
case 'c':if(a[i]==1)
{
b[i]=1;
c[k]='a';++k;
c[k]=2;++k;
++i;break;
}
if(a[i]==2)
{
b[i]=2;++i;break;
}
if(a[i]==3)
{
b[i]=3;
c[k]='c';++k;
c[k]='b';++k;
++i;break;
}
case 'b':if(a[i]==3){return 0;}
if(a[i]==2)
{
b[i]=2;
c[k]='b';++k;
++i;break;
}
if(a[i]==1)
{
b[i]=1;
c[k]='c';++k;
c[k]='a';++k;
c[k]=3;++k;
c[k]='a';++k;
++i;break;
}
}
//cout<<i<<' '<<k<<'\n';
//for(int i=0;i<n;++i)cout<<(int)a[i]<<' ';cout<<'\n';
//for(int i=0;i<n;++i)cout<<(int)b[i]<<' ';cout<<'\n';
//for(int i=0;i<n;++i)cout<<(int)c[i]<<' ';cout<<'\n';cout<<'\n';
}
//cout<<N;
if(k>0)return 0;
return 1;
}
int main()
{
f>>N;
for(;N>0;--N)g<<V()<<'\n';
}