Pagini recente » Cod sursa (job #2633749) | Cod sursa (job #2938120) | Cod sursa (job #593498) | Cod sursa (job #2458387) | Cod sursa (job #2174176)
#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;
}
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];c[k]=0;
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;
}
}
}
if(k>0||i<n)return 0;
return 1;
}
int main()
{
f>>N;
for(;N>0;--N)g<<V()<<'\n';
}