Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define all(X) sort((X).begin(), (X).end())
  4. #define int long long
  5. #define f first
  6. #define sec second
  7.  
  8. #ifdef DEBUG
  9. #define deb(X) X
  10. #define log(X) cout << X << "\n"
  11. #define dump(X) cout << " [" << #X << "] = " << X << " "
  12. #else
  13. #define deb(X)
  14. #define log(X)
  15. #define dump(X)
  16. #endif // DEBUG
  17.  
  18. using namespace std;
  19. // continue
  20.  
  21. using ll = long long;
  22. using ull = unsigned long long;
  23. using ld = long double;
  24.  
  25. void solve();
  26.  
  27. main() {
  28. ios_base::sync_with_stdio(0);
  29. cin.tie(0);
  30. cout.tie(0);
  31. const auto start = chrono::steady_clock::now();
  32. solve();
  33. exit(0);
  34. const auto finish = chrono::steady_clock::now();
  35. cout << chrono::duration_cast<chrono::milliseconds > (finish - start).count() << "ms\n";
  36. }
  37.  
  38. void solve ()
  39. {
  40. int n;
  41. cin >> n;
  42. string s;
  43. cin >> s;
  44. map < char, int > mp;
  45. for (int i = 0; i < s.size(); i++)
  46. {
  47. mp[s[i]]++;
  48. }
  49. map < char, int > b;
  50. for (int i = 0; i < s.size(); i++)
  51. {
  52. if (b[s[i]])
  53. {
  54. s.erase(i, 1);
  55. i--;
  56. }
  57. if (mp[s[i]] == 1){
  58. continue;
  59. }
  60. int cnt = 1, check = 0;
  61. int ind = i + 1;
  62. while (cnt != mp[s[i]] && ind < s.size())
  63. {
  64. if (s[ind] == s[i])cnt++;
  65. if (s[ind] < s[i])
  66. {
  67. check = 1;
  68. break;
  69. }
  70. if (s[ind] > s[i])
  71. {
  72. check = 0;
  73. break;
  74. }
  75. ind++;
  76. }
  77. if (!check)
  78. {
  79. b[s[i]] = 1;
  80. }
  81. if (check)
  82. {
  83. mp[s[i]]--;
  84. s.erase(i, 1);
  85. i--;
  86. }
  87. }
  88. cout << s;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement