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

Задача . D2. Приравнивание делением (сложная версия)


Единственное отличие между легкой и сложной версиями — количество элементов в массиве.

Вам задан массив \(a\), состоящий из \(n\) целых чисел. За один ход вы можете выбрать любое \(a_i\) и разделить его на \(2\) с округлением вниз (иными словами, за один ход вы можете присвоить \(a_i := \lfloor\frac{a_i}{2}\rfloor\)).

Вы можете совершать эту операцию любое (возможно, нулевое) количество раз с любым \(a_i\).

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

Не забудьте, что допустимо иметь \(a_i = 0\) после каких-то операций, таким образом, ответ всегда существует.

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

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

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

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

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


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

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

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