797C Minimal string

来源:互联网 发布:mac美国官网怎么下单 编辑:程序博客网 时间:2024/06/02 02:16
#include<iostream>#include<vector>#include<string>#include<set>#include<map>#include<algorithm>#include<queue>#include<stack>using namespace std;int main(){string s;while (cin >> s){vector<int> amount(26, 0);for (int i = 0; i < s.size(); i++) amount[s[i] - 'a']++;stack<char> st;for (int i = 0; i < s.size();){int kk = 26;if (!st.empty()){kk = st.top() - 'a';}int k;for (k = 0; k < 26; k++){if (amount[k]) break;}int min_val = min(kk, k);while (true){if (!st.empty() && st.top() - 'a' == min_val) break;st.push(s[i]);amount[s[i] - 'a']--;i++;if (i == s.size()) break;}if (!st.empty()){cout << st.top();st.pop();}}while (!st.empty()){cout << st.top();st.pop();}cout << endl;}return 0;}

0 0