Alphabetic Removals (Codeforces 999C)
Tags: Implement, implementation

You are given a string $$$s$$$ consisting of $$$n$$$ lowercase Latin letters. Polycarp wants to remove exactly $$$k$$$ characters ($$$k \le n$$$) 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$$$ ($$$1 \le k \le n \le 4 \cdot 10^5$$$) — 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).


Sample Inputs:
15 3
cccaabababaccbc

15 9
cccaabababaccbc

1 1
u

Sample Outputs:
cccbbabaccbc

cccccc

Solution (Python):
(n, k) = map(int, input().split())
s = input()
alph = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
rem = k
if k == n:
    print('')
else:
    ind = 0
    while rem > 0:
        if alph[ind] in s:
            cnt = s.count(alph[ind])
            a = min(rem, cnt)
            s = s.replace(alph[ind], '', a)
            rem -= a
        ind += 1
    print(s)

Solution (Python):
(length, k) = map(int, input().split())
string = input()
s1 = 'abcdefghijklmnopqrstuvwxyz'
j = 0
for i in s1:
    j = string.count(i)
    string = string.replace(i, '', min(j, k))
    k -= j
    if k < 1:
        break
print(string)

Solution (Python):
l = list(map(int, input().split()))
s = input()
(n, k) = (l[0], l[1])
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
while k > 0:
    for i in lst:
        x = s.count(i)
        s = s.replace(i, '', k)
        break
    k = k - x
    del lst[0]
print(s)