Codeforces Round 582 (Div. 3) |
---|
Закончено |
Единственное отличие между легкой и сложной версиями — количество элементов в массиве.
Вам задан массив $$$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$$$ равных элементов в массиве.
5 3 1 2 2 4 5
1
5 3 1 2 3 4 5
2
5 3 1 2 3 3 3
0
Название |
---|