Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n;
- cin >> n;
- string s;
- cin >> s;
- string t, ans;
- int fre[26] = {0};
- for (int i = 0; i < n; i++) fre[s[i]]++;
- char mn = 'a';
- for (int i = 0; i < 26; i++) {
- if (fre[i]) {
- mn = i + 'a';
- break;
- }
- }
- for (int i = 0; i < n; i++) {
- //cout << mn << ' ' << s[i] << ' ' << ans << '\n';
- if (mn == s[i]) {
- ans.push_back(mn);
- fre[s[i] - 'a']--;
- for (int j = 0; j < 26; j++) {
- if (fre[(char)(j + 'a')]) {
- mn = j + 'a';
- break;
- }
- }
- }
- else {
- while (t.size() && t.back() < mn) {
- ans.push_back(t.back());
- t.pop_back();
- }
- t.push_back(s[i]);
- fre[s[i] - 'a']--;
- for (int j = 0; j < 26; j++) {
- if (fre[(char)(j + 'a')]) {
- mn = j + 'a';
- break;
- }
- }
- }
- }
- while (t.size()) {
- ans.push_back(t.back());
- t.pop_back();
- }
- cout << ans << '\n';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement