Advertisement
maycod23

Untitled

Jun 18th, 2022
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. int n;
  2.     cin >> n;
  3.     string s;
  4.     cin >> s;
  5.     string t, ans;
  6.     int fre[26] = {0};
  7.     for (int i = 0; i < n; i++) fre[s[i]]++;
  8.     char mn = 'a';
  9.     for (int i = 0; i < 26; i++) {
  10.         if (fre[i]) {
  11.             mn = i + 'a';
  12.             break;
  13.         }
  14.     }
  15.     for (int i = 0; i < n; i++) {
  16.         //cout << mn << ' ' << s[i] << ' ' << ans << '\n';
  17.         if (mn == s[i]) {
  18.             ans.push_back(mn);
  19.             fre[s[i] - 'a']--;
  20.             for (int j = 0; j < 26; j++) {
  21.                 if (fre[(char)(j + 'a')]) {
  22.                     mn = j + 'a';
  23.                     break;
  24.                 }
  25.             }
  26.         }
  27.         else {
  28.             while (t.size() && t.back() < mn) {
  29.                 ans.push_back(t.back());
  30.                 t.pop_back();
  31.             }
  32.             t.push_back(s[i]);
  33.             fre[s[i] - 'a']--;
  34.             for (int j = 0; j < 26; j++) {
  35.                 if (fre[(char)(j + 'a')]) {
  36.                     mn = j + 'a';
  37.                     break;
  38.                 }
  39.             }
  40.         }
  41.  
  42.     }
  43.     while (t.size()) {
  44.         ans.push_back(t.back());
  45.         t.pop_back();
  46.     }
  47.     cout << ans << '\n';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement