Pagini recente » Cod sursa (job #81768) | Cod sursa (job #456769) | Cod sursa (job #2073080) | Cod sursa (job #1330983) | Cod sursa (job #202002)
Cod sursa(job #202002)
#include <fstream.h>
#include <iostream.h>
#define FIN "perle.in"
#define FOUT "perle.out"
#define N_MAX 11000
int T,y;
char a[N_MAX],x[N_MAX];
int solve(int n)
{
int i,j,k,nr;
for(i=1;i<=n;i++)
{
switch(x[i])
{
case 'a':
{
x[i]=a[i];
break;
}
case 'b':
{
if(a[i]=='2')//2b
{
for(j=n+1;j>=i+2;j--)
x[j]=x[j-1];
x[i]='2';
x[i+1]='b';
n=n+1;
}
if(a[i]=='1') //1a3ac
{
for(j=n+4;j>=i+5;j--)
x[j]=x[j-4];
x[i]='1';
x[i+1]='a';
x[i+2]='3';
x[i+3]='a';
x[i+4]='c';
n=n+4;
}
break;
}
case 'c':
{
if(a[i]=='2') //2
x[i]='2';
if(a[i]=='3')//3bc
{
for(j=n+2;j>=i+3;j--)
x[j]=x[j-2];
x[i]='3';
x[i+1]='b';
x[i+2]='c';
n=n+2;
}
if(a[i]=='1')//12a
{
for(j=n+2;j>=i+3;j--)
x[j]=x[j-2];
x[i]='1';
x[i+1]='2';
x[i+2]='a';
n=n+2;
}
break;
}
}
if(n>y)
return 0;
if(n==y)
{
nr=0;
for(k=1;k<=y;k++)
if(a[k]!=x[k])
{
nr=1;
break;
}
if (!nr) return 1;
}
}
return 0;
}
int main()
{
int i,j,k,ok;
ifstream f(FIN);
ofstream g(FOUT);
f>>T;
while (T)
{
f>>y;
for(j=1;j<=y;j++) f>>a[j];
ok=0;
x[1]='a';
if (solve(1)==1)
{
g<<1<<endl;
ok=1;
}
x[1]='b';
if (solve(1)==1 && ok==0)
{
g<<1<<endl;
ok=1;
}
x[1]='c';
if (solve(1)==1 && ok==0)
{
g<<1<<endl;
ok=1;
}
if (ok==0)
g<<0<<endl;
--T;
}
f.close();
g.close();
return 0;
}