In this HackerEarth Alex and his String problem solution Alex has a string S of length N consisting of lowercase alphabets. He wants to find lexicographically smallest string X of length N that can be formed using the following operation.
In one operation, he can select any one character among the at most first K characters of string S, remove it from string S and append it to string X. He can apply this operation as many times as he wants.
Help Alex find the string X.
HackerEarth Alex and his String problem solution.
#include <bits/stdc++.h>
using namespace std;
int main() {
priority_queue<char,vector<char>,greater<char>> pq;
string s;
cin>>s;
int k; cin>>k;
for(int i=0;i<k;i++) pq.push(s[i]);
string ans;
for(int i=k;i<s.length();i++){
ans+=pq.top();
pq.pop();
pq.push(s[i]);
}
while(!pq.empty()) {
ans+=pq.top();
pq.pop();
}
cout<<ans<<"\n";
return 0;
}
0 Comments