Олимпиадный тренинг

Задача . C. Алфавитное удаление


Задача

Темы: реализация *1200

Задана строка \(s\), состоящая из \(n\) строчных букв латинского алфавита. Поликарпу стало интересно, какой станет строка, если он удалит из \(s\) ровно \(k\) букв (\(k \le n\)). Для выполнения задуманного Поликарп применяет следующий алгоритм \(k\) раз:

  • если есть хотя бы одна буква 'a', удалить самое левое ее вхождение и завершить алгоритм, иначе перейти к следующему пункту;
  • если есть хотя бы одна буква 'b', удалить самое левое ее вхождение и завершить алгоритм, иначе перейти к следующему пункту;
  • ...
  • удалить самое левое вхождение буквы 'z' и завершить алгоритм.

Таким образом, Поликарп \(k\) раз удалит ровно одну букву из строки. Следовательно, он удалит ровно \(k\) букв из строки. Каждый раз для определения удаляемой буквы он использует пункты описанного выше алгоритма.

Помогите Поликарпу найти получившуюся строку.

Входные данные

В первой строке задано два целых числа \(n\) и \(k\) (\(1 \le k \le n \le 4 \cdot 10^5\)) — длина строки и количество букв, которые Поликарп удалит.

Во второй строке содержится строка \(s\), состоящая из \(n\) строчных букв латинского алфавита.

Выходные данные

Выведите строку, которая получится из \(s\) после удаления из строки ровно \(k\) букв при помощи \(k\) применений описанного выше алгоритма.

Если строка получается пустой, то ничего выводить не нужно. Допустимо как оставить вывод пустым, так и вывести одну пустую строку (перевод строки).


Примеры
Входные данныеВыходные данные
1 15 3
cccaabababaccbc
cccbbabaccbc
2 15 9
cccaabababaccbc
cccccc
3 1 1
u

                         

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя