EduBrick

N. Куча с увеличением ключа

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

Как классная задача про кучу с идентификаторами, но операция обратная: значение идентификатора увеличивается, и куча по-прежнему на минимум.

Разница в одной строке: значение выросло, значит элемент может только опуститься - нужно просеивание вниз из позиции where[id]where[id].

Массив позиций обновляется так же - при каждом обмене, без исключений.

Стоит проделать обе задачи именно потому, что направление просеивания определяется не операцией, а сочетанием направления изменения и типа кучи. В min-куче увеличение ключа гонит элемент вниз, в max-куче - вверх. Держать это в голове по правилу «увеличение - значит вверх» - верный способ ошибиться.

При равных значениях меньшим считается элемент с меньшим идентификатором.

Формат ввода

В первой строке - число запросов qq (1≤q≤2⋅1051 \le q \le 2 \cdot 10^5).

Далее qq строк. «1 id v» - добавить элемент; такого идентификатора в куче нет. «2 id v» - установить значение идентификатора равным vv; он есть, и vv больше текущего. «3» - извлечь минимум.

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

На каждый запрос типа 3 - идентификатор и значение извлечённого элемента или −1-1, если куча пуста.

Примеры

ввод
5
1 1 10
1 2 20
2 1 30
3
3
вывод
2 20
1 30
ввод
1
3
вывод
-1
Войдите, чтобы отправлять решения.