Pagini recente » Cod sursa (job #2689956) | Cod sursa (job #2956111) | Cod sursa (job #72237) | Profil hominidu | Cod sursa (job #633433)
Cod sursa(job #633433)
# include <fstream>
# include <cstring>
using namespace std;
ifstream f ("tm.in");
ofstream g ("tm.out");
int k,t,i,ok,stare;
char a[2000];
int main ()
{
f>>t;
f.getline (a,100);
for (k=1;k<=t;k++)
{
f.getline (a,2000);
a[strlen (a)]='Z';//blank
stare=0;
i=0;//capul de citire/scriere
ok=1;
while (stare!=100 && ok==1)//100=stare finala;ok=1 daca s-a aplicat cel putin o tranzitie
{
ok=0;
if (stare==0 && a[i]=='a')//daca sunt in starea 0 si citesc a
{
stare=1;//trec in starea 1
a[i]='A';//scriu A
i++;//merg in dreapta
ok=1;
}
if (stare==1 && a[i]=='a')
{
i++;//merg in dreapta,ramane starea si simbolul
ok=1;
}
if (stare==1 && a[i]=='b')
{
stare=2;
a[i]='B';
i--;
ok=1;
}
if (stare==1 && a[i]=='B')
{
stare=10;
i++;
ok=1;
}
if (stare==10 && a[i]=='B')
{
i++;
ok=1;
}
if (stare==10 && a[i]=='b')
{
stare=2;
a[i]='B';
i--;
ok=1;
}
if (stare==10 && a[i]=='c')
{
stare=4;
i--;
ok=1;
}
if (stare==2 && a[i]=='B')
{
i--;
ok=1;
}
if (stare==2 && a[i]=='a')
{
i--;
ok=1;
}
if (stare==2 && a[i]=='A')
{
stare=0;
i++;
ok=1;
}
if (stare==0 && a[i]=='B')
{
stare=3;
a[i]='B';
i++;
ok=1;
}
if (stare==3 && a[i]=='B')
{
i++;
ok=1;
}
if (stare==3 && a[i]=='c')
{
stare=100;
ok=1;
}
if (stare==3 && a[i]=='Z')
{
stare=100;
ok=1;
}
if (stare==3 && a[i]=='b')
{
stare=4;
i--;
ok=1;
}
if (stare==4 && a[i]=='B')
{
a[i]='b';
i--;
ok=1;
}
if (stare==4 && a[i]=='A')
{
stare=5;
i++;
ok=1;
}
if (stare==4 && a[i]=='a')
{
stare=5;
i++;
ok=1;
}
if (stare==1 && a[i]=='c')
{
stare=4;
i--;
ok=1;
}
if (stare==5 && a[i]=='b')
{
stare=6;
a[i]='B';
i++;
ok=1;
}
if (stare==6 && a[i]=='b')
{
i++;
ok=1;
}
if (stare==6 && a[i]=='C')
{
i++;
ok=1;
}
if (stare==6 && a[i]=='c')
{
stare=7;
a[i]='C';
i--;
ok=1;
}
if (stare==7 && a[i]=='C')
{
i--;
ok=1;
}
if (stare==7 && a[i]=='b')
{
i--;
ok=1;
}
if (stare==7 && a[i]=='B')
{
stare=5;
i++;
ok=1;
}
if (stare==5 && a[i]=='C')
{
stare=8;
i++;
ok=1;
}
if (stare==8 && a[i]=='C')
{
i++;
ok=1;
}
if (stare==8 && a[i]=='Z')
{
stare=100;
ok=1;
}
if (stare==0 && a[i]=='b')
{
stare=5;
ok=1;
}
if (stare==0 && a[i]=='c')
{
stare=100;
ok=1;
}
if (stare==1 && a[i]=='Z')
{
stare=100;
ok=1;
}
}
if (stare==100)
g<<"DA\n";
else
g<<"NU\n";
}
}