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

Задача . E2. MEX игра - 2 (сложная версия)


Это сложная версия задачи. Единственное различие между двумя версиями заключается в ограничениях на \(t\), \(m\) и сумму \(m\). Вы можете делать взломы, только если обе версии задачи решены.

Алиса и Боб играют в очередную игру на массиве \(a\) длины \(n\). Алиса начинает с пустого массива \(c\). Оба игрока ходят по очереди, причем Алиса начинает первой.

В свой ход Алиса выбирает один элемент из \(a\), добавляет его в \(c\), а затем удаляет из \(a\).

В свой ход Боб выбирает не более \(k\) элементов из \(a\), а затем удаляет их из \(a\).

Игра заканчивается, когда массив \(a\) становится пустым. Счет Алисы определяется как MEX\(^\dagger\) элементов \(c\). Алиса хочет максимизировать свой счет, а Боб — минимизировать его. Найдите итоговый счет Алисы, если оба игрока играют оптимально.

Массив будет дан в сжатом формате. Вместо того, чтобы давать элементы, присутствующие в массиве, мы будем давать их частоты. Формально, вам будет дано \(m\) — максимальный элемент массива, а затем \(m + 1\) целых чисел \(f_0, f_1, \ldots, f_{m}\), где \(f_i\) представляет собой количество раз, которое \(i\) встречается в массиве \(a\).

\(^\dagger\) \(\operatorname{MEX}\) (minimum excludant) массива целых чисел определяется как наименьшее целое неотрицательное число, которое не встречается в массиве. Например:

  • MEX массива \([2,2,1]\) равен \(0\), потому что \(0\) не принадлежит массиву.
  • MEX массива \([3,1,0,1]\) равен \(2\), потому что \(0\) и \(1\) принадлежат массиву, а \(2\) — нет.
  • MEX массива \([0,3,1,2]\) равен \(4\), потому что \(0\), \(1\), \(2\) и \(3\) принадлежат массиву, а \(4\) — нет.
Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \leq t \leq 10^5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

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

Вторая строка содержит \(m + 1\) целых чисел \(f_0, f_1, \ldots, f_m\) (\(1 \le f_i \le 10^9\)).

Гарантируется, что сумма \(m\) по всем наборам входных данных не превосходит \(2 \cdot 10^5\).

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

Для каждого набора входных данных найдите счет Алисы, если оба игрока играют оптимально.

Примечание

В первом наборе входных данных массив \(a\) равняется \([0, 0, 0, 0, 1, 1, 1, 1, 1]\). Возможная игра со счетом \(2\) выглядит следующим образом:

  1. Алиса выбирает элемент \(0\). После этого хода \(a = [0, 0, 0, 1, 1, 1, 1, 1]\) и \(c=[0]\).
  2. Боб выбирает для удаления \(3\) элемента \(0\), \(0\) и \(1\). После этого хода \(a = [0, 1, 1, 1, 1]\) и \(c=[0]\).
  3. Алиса выбирает элемент \(1\). После этого хода \(a = [0,1,1,1]\) и \(c=[0,1]\).
  4. Боб удаляет оставшиеся \(4\) элемента \(0\), \(1\), \(1\) и \(1\). После этого хода \(a=[\,]\) и \(c=[0,1]\).

В конце массив \(c=[0,1]\), его MEX равен \(2\). Обратите внимание, что это пример игры и не обязательно представляет собой оптимальную стратегию для обоих игроков.

Во втором наборе входных данных Алиса может выбрать \(0\) в свой первый ход, гарантируя, что ее счет будет не меньше \(1\). Боб может удалить все копии элемента \(1\) в свой первый ход, гарантируя тем самым, что счет Алисы не будет превосходить \(1\). Таким образом, счет Алисы равен \(1\), если оба игрока играют оптимально.


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

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

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