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

Задача . F. Сделай k одинаковых


Вам задан массив \(a\), состоящий из \(n\) элементов, и целое число \(k \le n\).

Вы хотите получить не менее чем \(k\) одинаковых элементов в массиве \(a\). За один ход вы можете совершить одну из следующих двух операций:

  • Взять один из минимальных элементов в массиве и увеличить его значение на один (более формально, если минимальный элемент в \(a\) равен \(mn\), то вы выбираете такой индекс \(i\), что \(a_i = mn\), и присваиваете \(a_i := a_i + 1\));
  • взять один из максимальных элементов в массиве и уменьшить его значение на один (более формально, если максимальный элемент в \(a\) равен \(mx\), то вы выбираете такой индекс \(i\), что \(a_i = mx\), и присваиваете \(a_i := a_i - 1\)).

Ваша задача — посчитать минимальное количество ходов, необходимое, чтобы получить не менее чем \(k\) одинаковых элементов в массиве.

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

Первая строка теста содержит два целых числа \(n\) и \(k\) (\(1 \le k \le n \le 2 \cdot 10^5\)) — количество элементов в \(a\) и необходимое количество одинаковых элементов.

Вторая строка теста содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)), где \(a_i\)\(i\)-й элемент в \(a\).

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

Выведите одно целое число — минимальное количество ходов, необходимое, чтобы получить не менее чем \(k\) одинаковых элементов в массиве.


Примеры
Входные данныеВыходные данные
1 6 5
1 2 2 4 2 3
3
2 7 5
3 3 2 1 1 1 3
4

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

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