CodeforcesSep 02, 2025

Alphabetic Removals

Hazrat Ali

Codeforces

You are given a string s consisting of n lowercase Latin letters. Polycarp wants to remove exactly k characters (kn) from the string s. Polycarp uses the following algorithm k times:

  • if there is at least one letter 'a', remove the leftmost occurrence and stop the algorithm, otherwise go to next item;
  • if there is at least one letter 'b', remove the leftmost occurrence and stop the algorithm, otherwise go to next item;
  • ...
  • remove the leftmost occurrence of the letter 'z' and stop the algorithm.

This algorithm removes a single letter from the string. Polycarp performs this algorithm exactly k times, thus removing exactly k characters.

Help Polycarp find the resulting string.

Input

The first line of input contains two integers n and k (1kn4105) — the length of the string and the number of letters Polycarp will remove.

The second line contains the string s consisting of n lowercase Latin letters.

Output

Print the string that will be obtained from s after Polycarp removes exactly k letters using the above algorithm k times.

If the resulting string is empty, print nothing. It is allowed to print nothing or an empty line (line break).

Examples
Input
15 3
cccaabababaccbc
Output
cccbbabaccbc
Input
15 9
cccaabababaccbc
Output
cccccc
Input
1 1
u
 
Solution

#include <bits/stdc++.h>
using namespace std;

int main() {
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  string ss = s;
  sort(ss.begin(), ss.end());
  vector<int> alphabet(26);
  for (int i = 0; k > 0 and i < n; i++, k--) {
    alphabet[ss[i] - 'a']++;
  }
  for (int i = 0; i < n; i++) {
    if (alphabet[s[i] - 'a'] > 0) {
      alphabet[s[i] - 'a']--;
    } else {
      cout << s[i];
    }
  }
  cout << endl;
  return 0;
}

 
 
 

Comments