Задача №2790. Range Minimum Query

Олимпиада завершена. Режим дорешивания.

Компания Giggle открывает свой новый офис в Судиславле, и вы приглашены на собеседование. Ваша задача — решить поставленную задачу.

Вам нужно создать структуру данных, которая представляет из себя массив целых чисел. Изначально массив пуст. Вам нужно поддерживать две операции:

  • запрос: «? i j» — возвращает минимальный элемент между \(i\)-ым и \(j\)-м, включительно;
  • изменение: «+ i x» — добавить элемент \(x\) после \(i\)-го элемента списка. Если \(i = 0\), то элемент добавляется в начало массива.

Конечно, эта структура должна быть достаточно хорошей.

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

Первая строка входного файла содержит единственное целое число \(n\) — число операций над массивом (\(1 \le n \le 200\,000\)). Следующие \(n\) строк описывают сами операции. Все операции добавления являются корректными. Все числа, хранящиеся в массиве, по модулю не превосходят \(10^9\).

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

Для каждой операции в отдельной строке выведите её результат.

Комментарий к примеру тестов.

Нижеследующая таблица показывает процесс изменения массива из примера.

ОперацияМассив после её выполнения
изначальнопуст
+ 0 55
+ 1 35, 3
+ 1 45, 4, 3
+ 0 22, 5, 4, 3
+ 4 12, 5, 4, 3, 1
Примеры
Входные данные
8
+ 0 5
+ 1 3
+ 1 4
? 1 2
+ 0 2
? 2 4
+ 4 1
? 3 5
Выходные данные
4
3
1
Сдать: для сдачи задач необходимо войти в систему