EduBrick

G. Приоритетная очередь

2000 мс · 256 МБ · всё или ничего

Реализуйте кучей приоритетную очередь с двумя операциями: добавить элемент и извлечь максимум. Вместимость очереди ограничена числом NN.

В этой задаче элементы могут повторяться, и поэтому нужны правила, делающие ответ однозначным:

  1. Просеивание не двигает элемент дальше, чем нужно. Если A[i]=A[2i]A[i] = A[2i], вызов просеивания не должен менять их местами: обмен равных кучу не портит, но он бесполезен.
  2. При двух равных детях выбирается левый.

Первое правило означает строгое сравнение: a[i] > a[i / 2], а не >=. Второе - что при равенстве левого и правого ребёнка берётся левый, то есть проверка правого должна быть строгой относительно уже выбранного.

Формат ввода

В первой строке - вместимость NN и число запросов MM (1≤N,M≤1051 \le N, M \le 10^5).

Далее MM строк. Запрос типа 1 - извлечь максимум, без параметров. Запрос типа 2 - добавить число из [−109;109][-10^9; 10^9].

Формат вывода

Ответ на каждый запрос по правилам выше, по одной строке.

После всех запросов - строка с кучей в конечном состоянии. Если очередь пуста, выведите пустую строку.

Примеры

ввод
4 7
1
2 9
2 4
2 9
2 9
2 7
1
вывод
-1
1
2
3
2
-1
2 9
9 4 9
ввод
1 2
2 5
2 5
вывод
1
-1
5
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.