fork download
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9.  
  10. int ile;
  11. cin >> ile;
  12. char tablica[1000000];
  13.  
  14. for (int j = 0; j < ile; j++)
  15. {
  16.  
  17. cin >> tablica;
  18.  
  19. int ileZnakow = strlen(tablica);
  20. int index;
  21. index = ileZnakow - 1;
  22. char* wsk = &tablica[index-1]; // ustawiam wskaźnik na przedostatni element tablicy
  23.  
  24.  
  25. for (int i = index; i > 0; i--) // wykonuję pętlę od końca ostatniego elementu tablicy
  26. {
  27.  
  28. if (*wsk >= tablica[index]) // jeśli kolejny element tablicy jest wiekszy/rowny od ostatniego najwiekszego to dokonujemy zamiany z elementem, który stoi przed ostatnim najwiekszym...
  29. {
  30. if(wsk != &tablica[index-1]) // ... o ile ich adresy nie są równe - unikam w ten sposób niepotrzebnej zamiany tych samych wartości
  31. tablica[index - 1] = *wsk;
  32.  
  33. index--;
  34. }
  35. wsk--;
  36. }
  37.  
  38.  
  39. for (int i = index; i < ileZnakow; i++) // wypisuję tablice od ostatniego najwiekszego elementu tablicy
  40. {
  41. printf("%c", tablica[i]);
  42.  
  43. }
  44. printf("\n");
  45. }
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0s 16088KB
stdin
2
klkkn
klKKnNLlNL
stdout
n
nlNL