Moi Drodzy, rozwiązuję zadanie ze SPOJa: https://pl.spoj.com/problems/AL_01_02/
Odpowiedzi na przykłady testowe zwraca mi poprawne, jednak SPOJ zwraca mi błędną odpowiedź.
Mam dwie wersje kodu(jedna wykomentowana).
Proszę Was o wskazówki na co powinienem zwrócić uwagę w tym kodzie.
#include <iostream>
using namespace std;
string ulozKolejke(string pierwotnaKolejka)
{
string ostatecznaKolejka;
int dlugosc = pierwotnaKolejka.length();
int ostaniaPozycjaStartowa;
// for(int i = dlugosc-1; i > 0; i--)
// {
// if(pierwotnaKolejka[i-1] < pierwotnaKolejka[i])
// {
// pierwotnaKolejka.erase(i-1,1);
// }
// }
// return pierwotnaKolejka;
for(int i = 0; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'n')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
for(int i = ostaniaPozycjaStartowa+1; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'l')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
for(int i = ostaniaPozycjaStartowa+1; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'k')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
for(int i = ostaniaPozycjaStartowa+1; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'N')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
for(int i = ostaniaPozycjaStartowa+1; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'L')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
for(int i = ostaniaPozycjaStartowa+1; i < dlugosc; i++)
{
if(pierwotnaKolejka[i] == 'K')
{
ostatecznaKolejka += pierwotnaKolejka[i];
ostaniaPozycjaStartowa = i;
}
}
return ostatecznaKolejka;
}
int main()
{
int iloscTestow;
string pierwotnaKolejka, ostatecznaKolejka;
cin >> iloscTestow;
while(iloscTestow--)
{
cin >> pierwotnaKolejka;
ostatecznaKolejka = ulozKolejke(pierwotnaKolejka);
cout << ostatecznaKolejka << endl;
}
return 0;
}