ICPC 2024-2025 NERC, квалификационный этап Чемпионата Юга и Поволжья России
A. Разрезание на части
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Монокарпа есть прямоугольный лист бумаги, который он хочет разделить ровно на $$$n$$$ частей.

Для этого он может производить два типа разрезов:

  • горизонтальный разрез, который начинается с левой стороны листа, заканчивается в правой стороне листа, проходя через весь лист параллельно верхней и нижней стороне листа;
  • вертикальный разрез, который начинается с верхней стороны листа, заканчивается в нижней стороне листа, проходя через весь лист параллельно левой и правой стороне листа.

Каждый из типов разрезов может быть произведен неограниченное количество раз. После очередного разреза никакие получившиеся части листа не перемещаются и не убираются, каждый новый разрез проходит через весь лист.

Перед вами стоит задача определить минимальное суммарное количество горизонтальных и вертикальных разрезов, которые должен сделать Монокарп, чтобы разделить лист на ровно $$$n$$$ частей.

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

В первой строке следует целое число $$$n$$$ ($$$2 \le n \le 1\,000\,000$$$) — количество частей, которые должны получиться.

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

Выведите минимальное суммарное количество горизонтальных и вертикальных разрезов, которые должен сделать Монокарп, чтобы разделить лист на ровно $$$n$$$ частей.

Примеры
Входные данные
8
Выходные данные
4
Входные данные
3
Выходные данные
2
Входные данные
100
Выходные данные
18
Примечание

В первом примере Монокарп может, например, сделать три горизонтальных разреза и один вертикальный разрез. После этого лист будет разделен на $$$8$$$ частей суммарно за четыре разреза.

Во втором примере Монокарп может, например, сделать два вертикальных разреза. После этого лист будет разделен на $$$3$$$ части за два разреза.

В третьем примере Монокарп должен сделать девять вертикальных разрезов и девять горизонтальных разрезов. После этого лист будет разделен на $$$100$$$ частей суммарно за $$$18$$$ разрезов.

B. Два экрана
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рассмотрим два экрана, которые могут отображать последовательности заглавных латинских букв. Изначально оба экрана ничего не отображают.

За одну секунду вы можете выполнить одно из следующих двух действий:

  • выбрать экран и заглавную латинскую букву, и добавить эту букву в конец последовательности, отображаемой на этом экране;
  • выбрать экран и скопировать последовательность с него на другой экран, перезаписывая последовательность, которая была отображена на другом экране.

Вам нужно вычислить минимальное количество секунд, которое вам нужно потратить, чтобы первый экран отображал последовательность $$$s$$$, а второй экран отображал последовательность $$$t$$$.

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

Первая строка содержит последовательность $$$s$$$, а вторая строка содержит последовательность $$$t$$$ ($$$1 \le |s|, |t| \le 100$$$). Обе последовательности состоят из заглавных латинских букв.

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

Выведите одно целое число — минимально возможное количество секунд, которое вам нужно потратить, чтобы первый экран отображал последовательность $$$s$$$, а второй экран отображал последовательность $$$t$$$.

Примеры
Входные данные
GARAGE
GARAGEFORSALE
Выходные данные
14
Входные данные
ABCDE
AABCD
Выходные данные
10
Примечание

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

  • потратить $$$6$$$ секунд, чтобы написать последовательность GARAGE на первом экране;
  • скопировать последовательность с первого экрана на второй экран;
  • потратить $$$7$$$ секунд, чтобы завершить последовательность на втором экране, написав FORSALE.

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

  • потратить $$$1$$$ секунду, чтобы написать последовательность A на втором экране;
  • скопировать последовательность со второго экрана на первый экран;
  • потратить $$$4$$$ секунды, чтобы завершить последовательность на первом экране, написав BCDE;
  • потратить $$$4$$$ секунды, чтобы завершить последовательность на втором экране, написав ABCD.

C. Перекраска шариков
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Монокарпа есть шарики, покрашенные в красный, желтый и зеленый цвета, причем среди них ровно $$$a$$$ шариков красного цвета, ровно $$$b$$$ шариков желтого цвета и ровно $$$c$$$ шариков зеленого цвета.

Монокарп может производить с шариками следующую операцию неограниченное количество раз:

  • выбрать любой шарик и перекрасить его в другой цвет: красный шарик в желтый или зеленый цвет, желтый шарик в красный или зеленый цвет, зеленый шарик в красный или желтый цвет.

Перед вами стоит задача определить минимальное количество операций, которые необходимы, чтобы количество различных цветов, в которые покрашены шарики, стало равно двум, причем количество шариков каждого из двух цветов должно быть одинаковым.

Добавлять или удалять шарики запрещено.

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

В первой строке следует целое число $$$a$$$ ($$$1 \le a \le 1\,000\,000$$$) — количество шариков красного цвета.

Во второй строке следует целое число $$$b$$$ ($$$1 \le b \le 1\,000\,000$$$) — количество шариков желтого цвета.

В третьей строке следует целое число $$$c$$$ ($$$1 \le c \le 1\,000\,000$$$) — количество шариков зеленого цвета.

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

Выведите минимальное количество операций, которые должен выполнить Монокарп, чтобы количество различных цветов, в которые покрашены шарики, стало равно двум, причем количество шариков каждого из двух цветов должно быть одинаковым.

Если это невозможно, выведите $$$-1$$$.

Примеры
Входные данные
2
3
1
Выходные данные
1
Входные данные
2
5
4
Выходные данные
-1
Входные данные
10
10
10
Выходные данные
10
Примечание

В первом примере нужно перекрасить единственный зеленый шарик в красный цвет. Тогда каждый шарик будет либо красным, либо желтым, причем будет три красных шарика и три желтых шарика.

Во втором примере невозможно перекрасить шарики таким образом, чтобы шариков каждого из двух цветов было одинаковое количество, поэтому нужно вывести $$$-1$$$.

D. Равные половины
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Монокарпа есть массив, состоящий из $$$n$$$ целых чисел, причем $$$n$$$ является четным числом.

Монокарп должен выполнить в своем массиве ровно один обмен по следующим правилам: выбрать позицию $$$x$$$ в левой половине массива ($$$1 \le x \le \frac{n}{2}$$$), выбрать позицию $$$y$$$ в правой половине массива ($$$\frac{n}{2} + 1 \le y \le n$$$) и поменять местами элементы в позициях $$$x$$$ и $$$y$$$.

Перед вами стоит задача определить, может ли Монокарп выполнить ровно один описанный обмен таким образом, чтобы сумма всех элементов в левой половине массива стала равна сумме всех элементов в правой половине массива.

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

В первой строке следует целое четное число $$$n$$$ ($$$2 \le n \le 200\,000$$$) — количество элементов в массиве.

В следующей строке следует последовательность целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10\,000$$$), где $$$a_i$$$ равно $$$i$$$-му элементу массива.

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

Если невозможно выполнить ровно один описанный в условии обмен, выведите «NO» (без кавычек).

В противном случае в первую строку выведите «YES» (без кавычек). Во вторую строку выведите два целых числа — позицию для обмена из левой половины массива и позицию для обмена из правой половины массива. Если ответов несколько, разрешается вывести любой из них.

Примеры
Входные данные
6
4 1 2 6 7 6
Выходные данные
YES
2 5
Входные данные
4
5 4 3 5
Выходные данные
NO
Примечание

В первом примере Монокарп должен поменять местами второй и пятый элементы. Тогда массив станет равным $$$[4, 7, 2, 6, 1, 6]$$$. Сумма левой половины будет равна $$$4 + 7 + 2 = 13$$$, а сумма правой половины будет равна $$$6 + 1 + 6 = 13$$$. Таким образом, суммы левой и правой половин массива станут равными.

Во втором примере невозможно выполнить обмен так, чтобы суммы левой и правой половин массива стали равными.

E. Биномиальные коэффициенты, ну типа
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Недавно акшиМ столкнулся с задачей, для решения которой нужны были биномиальные коэффициенты. Он написал код, который выглядел так:

    for (int n = 0; n < N; n++) { // цикл по n от 0 до N-1 включительно
C[n][0] = 1;
C[n][n] = 1;
for (int k = 1; k < n; k++) // цикл по k от 1 до n-1 включительно
C[n][k] = C[n][k - 1] + C[n - 1][k - 1];
}

К сожалению, он допустил ошибку, так как правильная формула следующая:

            C[n][k] = C[n - 1][k] + C[n - 1][k - 1];

Но его сокомандник, кеблидА, заинтересовался значениями, которые были получены использованием неправильной формулы. Пожалуйста, помогите ему вычислить эти коэффициенты для $$$t$$$ различных пар $$$(n_i, k_i)$$$. Обратите внимание: их необходимо вычислить в соответствии с первой (неправильной) формулой.

Поскольку значения $$$C[n_i][k_i]$$$ могут быть слишком большими, выводите их по модулю $$$10^9 + 7$$$.

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

В первой строке задано одно целое число $$$t$$$ ($$$1 \le t \le 10^5$$$) — количество пар. Далее в двух строках заданы сами $$$t$$$ пар.

Во второй строке заданы $$$t$$$ целых чисел $$$n_1, n_2, \dots, n_t$$$ ($$$2 \le n_i \le 10^5$$$).

В третьей строке заданы $$$t$$$ целых чисел $$$k_1, k_2, \dots, k_t$$$ ($$$1 \le k_i \lt n_i$$$).

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

Выведите $$$t$$$ целых чисел $$$C[n_i][k_i]$$$ по модулю $$$10^9 + 7$$$.

Примеры
Входные данные
3
2 5 5
1 2 3
Выходные данные
2
4
8
Входные данные
4
100000 100000 100000 100000
1 33333 66666 99999
Выходные данные
2
326186014
984426998
303861760

F. Новая игра
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Монокарп решил сыграть в новую игру. Для игры используется колода из $$$n$$$ карточек, причем на $$$i$$$-й карточке записано ровно одно целое число $$$a_i$$$.

В начале игры на первом ходе Монокарп может взять себе любую карточку из колоды. В процессе каждого следующего хода Монокарп может взять себе ровно одну карточку, на которой записано либо такое же число, которое было записано на карточке, взятой на предыдущем ходе, либо число на единицу большее, чем число, которое было записано на карточке, взятой на предыдущем ходе.

Иными словами, если на предыдущем ходе Монокарп взял себе карточку, на которой записано число $$$x$$$, то на текущем ходе он может взять себе либо карточку, на которой записано число $$$x$$$, либо карточку, на которой записано число $$$x + 1$$$.

После того как Монокарп взял себе карточку на очередном ходе, она удаляется из колоды.

По правилам игры количество различных чисел, записанных на карточках, которые Монокарп забрал себе, не должно превышать $$$k$$$.

Если после очередного хода Монокарп не может взять карточку, не нарушая описанных правил, игра заканчивается.

Перед вами стоит задача определить максимальное количество карточек, которые Монокарп может забрать себе из колоды в процессе игры, если на первом ходе он может взять любую карточку из колоды.

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

В первой строке следуют два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le k \le n \le 200\,000$$$) — количество карточек в колоде и максимальное количество различных чисел, которые могут быть записаны на карточках, которые Монокарп забирает себе.

Во второй строке следует последовательность целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^{9}$$$), где $$$a_i$$$ равно числу, которое записано на $$$i$$$-й карточке.

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

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

Примеры
Входные данные
10 2
5 2 4 3 4 3 4 5 3 2
Выходные данные
6
Входные данные
5 1
10 11 10 11 10
Выходные данные
3
Входные данные
9 3
4 5 4 4 6 5 4 4 6
Выходные данные
9
Примечание

В первом примере Монокарпу нужно взять себе любую из карточек, на которых записано число $$$3$$$. В процессе двух следующих ходов ему нужно взять себе две оставшиеся в колоде карточки, на которых записано число $$$3$$$. В процессе трех следующих ходов ему нужно взять себе три карточки, на которых записано число $$$4$$$. После этого Монокарп не сможет взять ни одной карточки из колоды, при этом у него будет $$$6$$$ карточек.

G. Магазины
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Монокарп живет в городе, который мы будем считать отрезком координатной прямой. Самая левая точка города расположена в точке $$$0$$$, а самая правая — в точке $$$10^{9}$$$.

В городе есть $$$n$$$ магазинов, расположенных в точках с целочисленными координатами, причем $$$i$$$-й магазин расположен в точке $$$a_i$$$. Гарантируется, что среди $$$n$$$ магазинов есть ровно один магазин в точке $$$0$$$ и ровно один магазин в точке $$$10^{9}$$$, а также гарантируется, что в каждой точке с целочисленными координатами есть не более одного магазина.

Правительство решило построить в городе еще $$$m$$$ магазинов. Строить новый магазин в точке, в которой уже был магазин, запрещено, а также в каждой целочисленной точке может быть построено не более одного нового магазина. Также запрещается строить магазины левее точки $$$0$$$ и правее точки $$$10^{9}$$$.

Перед вами стоит задача выбрать, где построить новые $$$m$$$ магазинов таким образом, чтобы среди всех $$$(n+m-1)$$$ пар соседних магазинов максимальное расстояние между магазинами из пары было минимально возможно. Иными словами, мы хотим минимизировать максимальную длину отрезка между двумя соседними магазинами.

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

В первой строке следуют два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 200\,000$$$, $$$1 \le m \le 200\,000$$$) — количество магазинов, которые построены в городе, и количество новых магазинов, которые нужно построить.

Во второй строке следует последовательность различных целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i \le 10^{9}$$$), где $$$a_i$$$ равно координате $$$i$$$-го уже построенного магазина.

Дополнительное ограничение на входные данные:

  • в заданной последовательности есть ровно одно число $$$0$$$ (магазин в точке с координатой $$$0$$$) и ровно одно число $$$10^{9}$$$ (магазин в точке с координатой $$$10^{9}$$$).
Выходные данные

Выведите одно целое число — минимально возможное максимальное расстояние между двумя соседними магазинами.

Примеры
Входные данные
4 1
750000000 250000000 0 1000000000
Выходные данные
250000000
Входные данные
2 2
0 1000000000
Выходные данные
333333334
Входные данные
3 17
500000000 0 1000000000
Выходные данные
55555556
Входные данные
4 2000
333333333 0 777777777 1000000000
Выходные данные
499376
Примечание

В первом примере нужно построить новый магазин в точке $$$500\,000\,000$$$. Тогда расстояние между всеми парами соседних магазинов будет равно $$$250\,000\,000$$$.

Во втором примере можно построить два новых магазина в точках $$$333\,333\,333$$$ и $$$666\,666\,666$$$. Тогда магазины будут расположены в точках $$$[0, 333\,333\,333, 666\,666\,666, 1\,000\,000\,000]$$$, а максимальное расстояние между парой соседних будет равно $$$1\,000\,000\,000 - 666\,666\,666 = 333\,333\,334$$$ (между третьим и четвертым магазинами).

H. Максимальная красота
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Введем понятие красоты строки. Рассмотрим длины всех максимальных по включению блоков, состоящих из одинаковых букв. Тогда красота строки — это сумма квадратов длин всех таких блоков.

Например, пусть строка равна «aabbbcaaadddd». В этой строке следующие блоки одинаковых букв: блок из двух букв «a», блок из трех букв «b», блок из одной буквы «c», блок из трех букв «a» и блок из четырех букв «d». Таким образом, красота этой строки равна $$$2^2 + 3^2 + 1^2 + 3^2 + 4^2 = 4 + 9 + 1 + 9 + 16 = 39$$$.

У Монокарпа есть строка $$$s$$$, состоящая из $$$n$$$ букв латинского алфавита. Он ровно один раз выберет пару соседних различных букв в строке $$$s$$$ и поменяет их местами.

Перед вами стоит задача определить максимальную красоту новой строки Монокарпа, которую он может получить после ровно одного обмена соседних различных букв в своей строке $$$s$$$.

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

В первой строке следует целое число $$$n$$$ ($$$2 \le n \le 200\,000$$$) — длина строки $$$s$$$.

Во второй строке следует строка $$$s$$$ длины $$$n$$$, состоящая из строчных букв латинского алфавита.

Дополнительное ограничение на входные данные:

  • в строке есть хотя бы две различные буквы.
Выходные данные

Выведите максимальную красоту новой строки, которую Монокарп может получить после ровно одного обмена соседних различных букв в своей строке $$$s$$$.

Примеры
Входные данные
11
aabaacaabaa
Выходные данные
21
Входные данные
5
wwwwz
Выходные данные
11
Примечание

В первом примере можно, например, поменять местами третью и четвертую буквы. Тогда Монокарп получит строку «aaabacaabaa». Красота этой строки равна $$$3^2 + 1^2 + 1^2 + 1^2 + 2^2 + 1^2 + 2^2 = 9 + 1 + 1 + 1 + 4 + 1 + 4 = 21$$$.

Во втором примере нужно поменять местами четвертую и пятую буквы. Тогда Монокарп получит строку «wwwzw». Красота этой строки равна $$$3^2 + 1^2 + 1^2 = 9 + 1 + 1 = 11$$$.

I. Проверка характеристик
ограничение по времени на тест
2.5 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Представьте себе игру, в которой вы играете за персонажа с двумя характеристиками: «Сила» и «Интеллект», которые изначально находятся на нулевом уровне.

В ходе игры вы получите $$$m$$$ очков характеристик, которые позволят вам поднять их уровни — одно очко увеличивает одну из характеристик на один уровень. Но в процессе игры вы также сталкиваетесь с так называемыми «Проверками характеристик»: если ваша соответствующая характеристика достаточно высока, вы пройдете проверку; в противном случае вы провалите проверку.

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

Обратите внимание, что вы не можете изменить порядок записей.

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

В первой строке заданы два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le m \le 5000$$$; $$$m \lt n \le 2 \cdot 10^6$$$) — количество записей в списке и общее количество очков, которые вы получите в ходе игры.

Во второй строке заданы $$$n$$$ целых чисел $$$r_1, r_2, \dots, r_n$$$ ($$$-m \le r_i \le m$$$), где $$$r_i$$$ кодирует $$$i$$$-ю запись:

  • Если $$$r_i = 0$$$, то $$$i$$$-я запись является записью о получении одного очка характеристик. Вы можете потратить его на повышение уровня либо Силы, либо Интеллекта;
  • Если $$$r_i \gt 0$$$, то это проверка Интеллекта: если ваш уровень Интеллекта больше или равен $$$|r_i|$$$, вы проходите проверку.
  • Если $$$r_i \lt 0$$$, то это проверка Силы: если ваш уровень Силы больше или равен $$$|r_i|$$$, вы проходите проверку.
Выходные данные

Каково максимальное количество проверок, которые вы можете пройти, если не можете изменить порядок записей.

Примеры
Входные данные
10 5
0 1 0 2 0 -3 0 -4 0 -5
Выходные данные
3
Входные данные
3 1
1 -1 0
Выходные данные
0
Входные данные
9 3
0 0 1 0 2 -3 -2 -2 1
Выходные данные
4

J. Карточная игра
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В самой популярной карточной игре в Берляндии используется колода из $$$n \times m$$$ карт. У каждой карты есть два параметра: масть и ранг. Масти в игре пронумерованы от $$$1$$$ до $$$n$$$, а ранги пронумерованы от $$$1$$$ до $$$m$$$. Для каждой комбинации масти и ранга существует ровно одна карта в колоде.

Карта с мастью $$$a$$$ и рангом $$$b$$$ может побить карту с мастью $$$c$$$ и рангом $$$d$$$ в одном из двух случаев:

  • $$$a = 1$$$, $$$c \ne 1$$$ (карта масти $$$1$$$ может побить карту любой другой масти);
  • $$$a = c$$$, $$$b \gt d$$$ (карта может побить любую другую карту той же масти, но ниже рангом).

В игру играют два игрока. Перед началом игры они получают ровно по половине колоды. Первый игрок выигрывает, если для каждой карты второго игрока он может выбрать свою карту, которая ее может побить, и при этом не будет выбирать свои карты повторно (то есть существует такое разбиение на пары карт первого игрока с картами второго игрока так, чтобы в каждой паре карта первого игрока била карту второго игрока). Иначе выигрывает второй игрок.

Ваша задача — посчитать количество способов распределить карты так, чтобы выиграл первый игрок. Два способа считаются различными, если существует такая карта, что в одном она принадлежит первому игроку, а в другом — второму. Количество способов может быть очень большим, поэтому выведите его по модулю $$$998244353$$$.

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

Единственная строка содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n, m \le 500$$$).

Дополнительное ограничение на входные данные: $$$m$$$ четно.

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

Выведите единственное целое число — количество способов распределить карты так, чтобы выиграл первый игрок, взятое по модулю $$$998244353$$$.

Примеры
Входные данные
1 4
Выходные данные
2
Входные данные
2 2
Выходные данные
2
Входные данные
3 6
Выходные данные
1690
Входные данные
5 4
Выходные данные
568
Входные данные
500 500
Выходные данные
84693741

K. Выбери свои запросы
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дан массив $$$a$$$, состоящий из $$$n$$$ целых чисел (нумеруемых от $$$1$$$ до $$$n$$$). Изначально все они равны нулю.

Необходимо обработать $$$q$$$ запросов $$$i$$$-й запрос состоит из двух различных целых чисел $$$x_i$$$ и $$$y_i$$$. В ходе $$$i$$$-го запроса нужно выбрать целое число $$$p$$$ (которое равно либо $$$x_i$$$, либо $$$y_i$$$) и целое число $$$d$$$ (которое равно либо $$$1$$$, либо $$$-1$$$), и присвоить $$$a_p = a_p + d$$$.

После каждого запроса каждый элемент массива $$$a$$$ должен быть неотрицательным целым числом.

Необходимо обработать все запросы таким образом, чтобы сумма всех элементов массива $$$a$$$ после последнего запроса была минимально возможной.

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

Первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$2 \le n \le 3 \cdot 10^5$$$; $$$1 \le q \le 3 \cdot 10^5$$$) — количество элементов в массиве $$$a$$$ и количество запросов соответственно.

Затем следуют $$$q$$$ строк. $$$i$$$-я из этих строк содержит два целых числа $$$x_i$$$ и $$$y_i$$$ ($$$1 \le x_i, y_i \le n$$$; $$$x_i \ne y_i$$$) — описание $$$i$$$-го запроса.

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

Для каждого запроса выведите строку, содержащую два символа:

  • первый символ должен быть x, если вы выбрали $$$p=x_i$$$, или y, если вы выбрали $$$p=y_i$$$;
  • второй символ должен быть +, если вы выбрали $$$d=1$$$, или -, если вы выбрали $$$d=-1$$$.

Если существует несколько ответов, выведите любой из них.

Примеры
Входные данные
3 4
1 2
3 2
3 1
1 2
Выходные данные
y+
x+
x-
y-
Входные данные
4 4
1 2
2 3
3 4
3 2
Выходные данные
y+
y+
x-
y-
Входные данные
4 2
2 1
4 3
Выходные данные
y+
x+

L. Переменный урон
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Монокарп собирает армию в компьютерной игре, чтобы сразиться с драконом.

Армия состоит из двух частей: героев и защитных артефактов. У каждого героя один параметр — его здоровье. У каждого защитного артефакта тоже один параметр — его прочность.

Перед началом боя Монокарп раздает артефакты героям так, чтобы каждый герой получил не более одного артефакта.

Бой состоит из раундов, которые проходят следующим образом:

  • сначала дракон наносит каждому герою урон, равный $$$\frac{1}{a + b}$$$ (вещественное число без округления), где $$$a$$$ — количество живых героев, а $$$b$$$ — количество активных артефактов;
  • после этого все герои со здоровьем $$$0$$$ или меньше умирают;
  • наконец, некоторые артефакты деактивируются. Артефакт с прочностью $$$x$$$ деактивируется, когда происходит одно из следующего: герой, держащий артефакт, либо умирает, либо получает суммарно $$$x$$$ урона (от начала боя).

Бой заканчивается, если в живых не осталось ни одного героя.

Изначально армия пуста. Приходит $$$q$$$ запросов: добавить в армию героя со здоровьем $$$x$$$ или артефакт с прочностью $$$y$$$. После каждого запроса найдите максимальное количество раундов, которые Монокарп может продержаться, если оптимально распределит артефакты.

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

В первой строке записано одно целое число $$$q$$$ ($$$1 \le q \le 3 \cdot 10^5$$$) — количество запросов.

В $$$i$$$-й из следующих $$$q$$$ строк записаны два целых числа $$$t_i$$$ и $$$v_i$$$ ($$$t_i \in \{1, 2\}$$$; $$$1 \le v_i \le 10^9$$$) — тип запроса и величина параметра запроса. Если тип $$$1$$$, то добавляется один герой со здоровьем $$$v_i$$$. Если тип $$$2$$$, то добавляется артефакт с прочностью $$$v_i$$$.

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

Выведите $$$q$$$ целых чисел. После каждого запроса выведите максимальное количество раундов, которые Монокарп может продержаться, если оптимально распределит артефакты.

Примеры
Входные данные
3
2 5
1 4
1 10
Выходные данные
0
8
19
Входные данные
10
1 9
1 6
2 4
1 8
1 3
2 10
1 3
1 6
1 10
2 6
Выходные данные
9
15
19
27
30
39
42
48
59
65
Примечание

Рассмотрим первый пример.

  • Добавляется артефакт с прочностью $$$5$$$. Так как героев пока нет, бой сразу же заканчивается.
  • Добавляется герой со здоровьем $$$4$$$. Монокарп может дать ему артефакт с прочностью $$$5$$$. Сначала идут раунды, в которых герою наносится $$$\frac{1}{1 + 1} = \frac{1}{2}$$$ урона. Через $$$8$$$ таких раундов суммарно будет нанесено $$$4$$$ урона, и герой умрет, а артефакт деактивируется. Больше в живых нет героев, так что бой заканчивается за $$$8$$$ раундов.
  • Добавляется герой со здоровьем $$$10$$$. Пусть теперь артефакт с прочностью $$$5$$$ будет у этого героя. Тогда за первые $$$12$$$ раундов героям будет нанесено $$$12 \cdot \frac{1}{2 + 1} = 4$$$ урона, и первый герой умрет. У второго героя осталось $$$6$$$ здоровья, а у артефакта $$$1$$$ прочности. Теперь урон равен $$$\frac{1}{2}$$$, поэтому еще за $$$2$$$ раунда артефакт деактивируется. У второго героя осталось $$$5$$$ здоровья. За еще $$$5$$$ раундов умрет второй герой. Поэтому ответ равен $$$12 + 2 + 5 = 19$$$.