Весенняя олимпиада Л2Ш по программированию 2025
A. Высшее наказание
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кирилл Евгеньевич, как обычно, опаздывает на первый урок... Кабинет, конечно, открыл Данила Сергеевич, но обида на своего учителя, который продолжает повторять свои ошибки, только накапливается. Нужно проучить Кирилла Евгеньевича!

Внезапно кому-то пришла идея покопаться в шкафу. Там оказалось $$$n$$$ брусков от разломанного креста, подаренного на Новый Год. Чтобы испугать и наказать виновника, нужно составить что-то страшное — невырожденный треугольник$$$^{\text{∗}}$$$ с огромным периметром!

Так как делать вручную это сложно, помоги нам понять, какого максимального периметра можно получить треугольник, или $$$-1$$$, если не получится составить ни один треугольник. Два бруска не могут образовывать одну сторону. То есть, например, при наличии брусков $$$1,1,2,2$$$ нельзя сделать треугольник со сторонами $$$2$$$, $$$2$$$ и $$$1+1$$$.

$$$^{\text{∗}}$$$Невырожденным считается треугольник со сторонами $$$(a,b,c)$$$, для которого выполняется следующая система неравенств: $$$ \left\{ \begin{array}{c} a + b \gt c \\ b + c \gt a \\ c + a \gt b \end{array}\right.$$$

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

В первой строке входных данных вводится единственное целое число $$$n$$$ ($$$3 \le n \le 10^5$$$) — количество брусков, найденных в шкафу.

Во второй строке вводится $$$n$$$ целых чисел $$$a_i$$$ ($$$1 \le a_i \le 10^9$$$) — длины брусков, найденных в шкафу.

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

В единственной строке выведите максимальный периметр, который можно получить, или $$$-1$$$, если нельзя составить ни один треугольник.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$0$$$Тесты из условия
$$$1$$$$$$n \le 200$$$$$$39$$$
$$$2$$$$$$n \le 1000$$$$$$22$$$$$$1$$$
$$$3$$$$$$39$$$$$$0-2$$$
Примеры
Входные данные
5
3 6 2 7 4
Выходные данные
17
Входные данные
3
1 2 9
Выходные данные
-1

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

Вам дан набор из $$$n$$$ гирек, где $$$a_i$$$ — вес $$$i$$$-й гирьки. В магазине есть бесконечное количество товаров каждого натурального веса.

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

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

В первой строке входных данных вводится единственное целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — количество гирек в вашем распоряжении.

Во второй строке входных данных вводится $$$n$$$ чисел $$$a_i$$$ ($$$1 \le a_i \le 10^9$$$) — веса гирек в вашем распоряжении.

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

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

Система оценки
Доп. ограниченияБаллыНеобх. подгруппыКомментарий
$$$n$$$$$$a_i$$$
$$$0$$$Тесты из условия
$$$1$$$$$$a_i \le i$$$$$$8$$$
$$$2$$$$$$n \le 18$$$$$$12$$$
$$$3$$$$$$n \le 100$$$$$$\sum a_i \le 10^4$$$$$$17$$$
$$$4$$$$$$n \le 1000$$$$$$a_i \le 1000$$$$$$36$$$$$$3$$$
$$$5$$$$$$27$$$$$$0-4$$$
Примеры
Входные данные
4
4 2 3 1
Выходные данные
10
Входные данные
2
1 3
Выходные данные
4

C. 28 ударов ножом
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это интерактивная задача

Представьте, что вы оказались в одной небезызвестной игре следователем. Вам предстоит разоблачить $$$n$$$ девиантов, которые совершили вопиющие преступления. У каждого андроида $$$i$$$ есть мера наказания $$$a_i$$$ ($$$1 \le a_i \le 10^9$$$, $$$a_i$$$ — целое) и параметр стресса $$$c_i$$$, изначально равный нулю. Так как времени у нас мало, вам предстоит провести параллельный допрос. Одним вопросом вы можете выкрикнуть во всеуслышанье (все не сознавшиеся девианты услышат ваше заявление) «$$$X$$$ ударов ножом! Ты действовал наверняка!». Каждый девиант воспринимает это высказывание на свой счет и начинает думать:

  • Если $$$X \gt a_i$$$, девиант будет уверен, что вы не знаете, что он совершил преступление, а просто гадаете, поэтому после этого он перестанет реагировать на любые вопросы.
  • Если $$$X \le a_i$$$, девиант получает $$$X$$$ единиц стресса, потому что уверен, что вы вот вот раскроете его грехи. То есть $$$c_i := c_i + X$$$ (значение $$$c_i$$$ увеличивается на $$$X$$$).
После любого вопроса если уровень стресса $$$c_i$$$ будет не меньше меры наказания, то он сознается и начнёт всех сдавать, но сделает это по-хитрому: назовёт сумму наказаний себя и другого девианта. Более формально, когда будет верно $$$c_i \ge a_i$$$, андроид $$$i$$$ скажет про каждого подельника $$$j$$$ число $$$a_i + a_j$$$, $$$i \neq j$$$.

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

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

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

В единственной строке вводится три целых числа $$$n$$$, $$$k$$$, $$$t$$$ ($$$3 \le n \le 100$$$, $$$30 \le k \le 1000$$$, $$$0 \le t \le 1$$$) — количество девиантов в участке, максимальное количество вопросов, которое можно задать, и параметр, отвечающий за то, нужно ли выводить все меры наказаний или достаточно лишь, чтобы все сознались.

Протокол взаимодействия

В этой задаче вы можете делать вопросы двух типов:

  • «$$$?$$$ $$$X$$$» ($$$1 \le X \le 10^9$$$). Вы совершаете обвинение с $$$X$$$ ударами.

    После очередного запроса интерактор возвращает следующие данные:

    В первой строке вводится число $$$m$$$ ($$$0 \le m \le n$$$), количество девиантов, которые хотят признаться.

    В следующих $$$m$$$ строках вводится по $$$n + 1$$$ числу: $$$j$$$ и $$$n$$$ чисел $$$b_i$$$, где $$$b_i = a_j + a_i$$$ для всех $$$j \neq i$$$. Для $$$i = j$$$, $$$b_i = 0$$$. Номер признающегося девианта и информация про подельников соответственно.

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

  • «$$$!$$$ $$$a_1\ a_2\ \dots\ a_n$$$». Этот вопрос означает, что вы готовы сказать все меры наказаний и допрос на этом заканчивается и ваша программа должна немедленно завершиться. Если не все девианты сознались, вы получите вердикт Wrong answer. Все выведенные вами числа $$$a_i$$$ должны быть целыми, а также должно быть верно $$$0 \le a_i \le 10^9$$$ ($$$0$$$ обозначает, что вы не знаете меру наказания). Если хотя бы одно число нецелое или вне этого диапазона — вы получите вердикт Wrong answer. Также, если $$$t = 1$$$ и вы вывели хотя бы одну неверную меру наказания, вы получите вердикт Wrong answer.

    После совершения данного запроса, ваша программа должна завершиться.

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

Интерактор в данной задаче является неадаптивным

После вывода каждого запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для этого используйте:

  • fflush(stdout) или cout.flush() в C++;
  • sys.stdout.flush() в Python;
  • смотрите документацию для других языков.
Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$k$$$$$$a_i$$$$$$t$$$
$$$0$$$Тесты из условия
$$$1$$$$$$k = \max(n, 30)$$$$$$t=0$$$$$$6$$$$$$a_1 = 1$$$
$$$2$$$$$$t=1$$$$$$7$$$$$$1$$$
$$$3$$$$$$k = 1000$$$$$$a_i \le 1000$$$$$$ t=0$$$$$$9$$$
$$$4$$$$$$t=1$$$$$$10$$$$$$3$$$
$$$5$$$$$$a_i \le 5 \cdot 10^5$$$$$$t = 0$$$$$$10$$$$$$3$$$
$$$6$$$$$$t=1$$$$$$11$$$$$$3-5$$$
$$$7$$$$$$k = 30$$$$$$t=0$$$$$$8$$$$$$a_i$$$ — степень двойки
$$$8$$$$$$t=1$$$$$$8$$$$$$7$$$
$$$9$$$$$$t=0$$$$$$15$$$$$$1,3,5,7$$$
$$$10$$$$$$t=1$$$$$$16$$$$$$0-9$$$
Примеры
Входные данные
4 30 0

1
1 0 8 7 9

3
2 8 0 9 11
3 7 9 0 10
4 9 11 10 0
Выходные данные

? 3


? 3




! 0 0 0 0
Входные данные
4 30 1

1
1 0 8 7 9

3
2 8 0 9 11
3 7 9 0 10
4 9 11 10 0
Выходные данные

? 3


? 3




! 3 5 4 6
Примечание

Разберем, что происходит в примере:

Сначала прозвучало "3 удара ножом". Первый девиант сознался поскольку его стресс достиг его меры наказания ($$$0 + 3 \ge 3$$$). Стресс всех андроидов: $$$3$$$, $$$3$$$, $$$3$$$, $$$3$$$

Дальше еще раз прозвучало "3 удара ножом". Все девианты сознались, потому что их стрессы достигли $$$6$$$. Соответственно $$$3 + 3 \ge 5$$$, $$$3 + 3 \ge 4$$$, $$$3 + 3 \ge 6$$$ для второго, третьего и четвертого девиантов.

Так как все сознались, можно вывести меры наказания. Они оказались $$$3$$$, $$$5$$$, $$$4$$$ и $$$6$$$.

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

D. Транспортная реформа
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Автобусы на Ленинском стали редко ходить. Марк стал жертвой такой транспортной реформы и из-за этого постоянно опаздывает в школу. Это никому не нравилось, даже Марку, поэтому он решил оптимизировать свой маршрут другими способами. А именно, самокатами.

Известно, что Марк ходит со скоростью $$$a$$$ м/с, а самокат едет со скоростью $$$b$$$ м/с ($$$b \gt a$$$). Марк выбирает самокат следующим образом — приложение ему подсказывает круг с центром в локации Марка минимального радиуса, содержащий хотя бы один самокат, а также отмечает на этом круге все самокаты (в некоторых точках могут стоять сразу несколько самокатов). Марк выбирает из них такой, что суммарное время хождения до него и поездки на самокате до школы минимальное. Если идти пешком окажется не хуже, Марк пойдет пешком, иначе поедет на этом самокате.

Марку понравился его метод путешествий до школы, поэтому он решил использовать его не только для школы, но и для других точек города. А именно, в $$$q$$$ дней ему надо добраться до точки ($$$x_i, y_i$$$). Он живёт в точке ($$$0, 0$$$). В каждый из дней окружность и самокаты будут одни и те же (так как компании возвращают самокаты на место). Всегда будет $$$n$$$ самокатов на одинаковом расстоянии от ($$$0, 0$$$). Для каждого из дней выведите время в пути от дома Марка до очередной точки.

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

В первой строке входных данных вводится четыре целых числа $$$n,q,a,b$$$ ($$$1 \le n \le 10^5, 1 \le q \le 2 \cdot 10^5$$$, $$$1 \le a \lt b \le 10^9$$$) — количество самокатов, которые приложение показывает Марку, количество дней, в которые Марку предстоит путешествовать, скорость путешествия пешком и скорость путешествия на самокате соответственно.

В следующих $$$n$$$ строках вводится по два целых числа $$$x_j, y_j$$$ ($$$-10^9 \le x_j,y_j \le 10^9$$$) — точка, в которой расположен $$$j$$$-й самокат.

В следующих $$$q$$$ строках вводится по два целых числа $$$x_i, y_i$$$ ($$$-10^9 \le x_i,y_i \le 10^9$$$) — точка, куда нужно добраться Марку в $$$i$$$-й день.

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

В $$$q$$$ строках выведите время в пути Марка от дома до очередной точки.

Ваш ответ считается правильным, если его абсолютная или относительная ошибка не превышает $$$10^{-6}$$$. Формально, пусть ваш ответ будет $$$a$$$, а ответ жюри — $$$b$$$. Ваш ответ принимается, если и только если $$$\frac{\left|a-b\right|}{\max(1, |b|)}$$$.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$n$$$$$$q$$$
$$$0$$$Тесты из условия
$$$1$$$$$$n \le 1000$$$$$$q \le 1000$$$$$$29$$$$$$0$$$
$$$2$$$$$$24$$$$$$|x|, |y| \le 20$$$
$$$3$$$$$$15$$$$$$x,y \ge 0$$$
$$$4$$$$$$13$$$$$$3$$$$$$y \ge 0$$$
$$$5$$$$$$19$$$$$$0-4$$$
Примеры
Входные данные
2 4 1 3
-3 4
4 3
0 -7
8 6
-6 8
0 15
Выходные данные
7.00000000000000000000
6.66666666666666666652
6.66666666666666666652
8.80058475033045972680
Входные данные
3 4 1 2
0 10
0 10
0 -10
3 4
0 15
0 -15
20 0
Выходные данные
5.00000000000000000000
12.50000000000000000000
12.50000000000000000000
20.00000000000000000000

E. РАДодододостные запросы
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Обозначим за rad$$$(n)$$$ произведение всех различных простых делителей числа $$$n$$$. Например, rad$$$(504)$$$ = rad$$$(2^3 \cdot 3^2 \cdot 7)$$$ $$$= 2 \cdot 3 \cdot 7$$$ $$$=42$$$. Положим rad$$$(1) = 1$$$.

Условие этой задачи просто: у вас есть массив $$$a$$$ размера $$$n$$$. Вам дано $$$q$$$ запросов $$$[\ell;r]$$$, посчитать rad произведения чисел $$$a_\ell, a_{\ell + 1}, \dots, a_r$$$, то есть: $$$$$$\displaystyle\texttt{rad}\left(\prod_{i=\ell}^{r} a_i\right) = \texttt{rad}\left(a_\ell \times a_{\ell + 1} \times \dots \times a_r \right)$$$$$$ Так как это число может быть довольно большим, выведите его по модулю $$$10^9 + 7$$$.

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

В первой строке входных данных вводятся два числа $$$n,q$$$ ($$$1 \le n,q \le 5 \cdot 10^5$$$), количество элементов в массиве и количество запросов.

Во второй строке входных данных вводится $$$n$$$ чисел $$$a_i$$$ ($$$1 \le a_i \le 2 \cdot 10^5$$$), массив $$$a$$$.

В следующих $$$q$$$ строках вводится по два числа $$$\ell, r$$$ ($$$1 \le \ell \le r \le n$$$), границы очередного запроса.

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

В $$$q$$$ строках выходных данных выведите по одному числу, ответ на задачу по модулю $$$10^9 + 7$$$.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$n$$$$$$q$$$$$$a_i$$$
$$$0$$$Тесты из условия
$$$1$$$$$$n \le 100$$$$$$q \le 100$$$$$$a_i \le 100$$$$$$8$$$$$$0$$$
$$$2$$$$$$9$$$$$$1$$$
$$$3$$$$$$n \le 1000$$$$$$q \le 1000$$$$$$a_i \le 1000$$$$$$10$$$$$$1$$$
$$$4$$$$$$11$$$$$$1-3$$$
$$$5$$$$$$11$$$Все $$$a_i$$$ простые и различные
$$$6$$$$$$a_i \le 300$$$$$$12$$$$$$0-2$$$
$$$7$$$$$$n \le 5 \cdot 10^4$$$$$$q \le 5 \cdot 10^4$$$$$$7$$$$$$0,1,3$$$
$$$8$$$$$$n \le 10^5$$$$$$q \le 10^5$$$$$$4$$$$$$7$$$
$$$9$$$$$$n \le 2 \cdot 10^5$$$$$$q \le 2 \cdot 10^5$$$$$$4$$$$$$8$$$
$$$10$$$$$$n \le 3 \cdot 10^5$$$$$$q \le 3 \cdot 10^5$$$$$$3$$$$$$9$$$
$$$11$$$$$$n \le 4 \cdot 10^5$$$$$$q \le 4 \cdot 10^5$$$$$$2$$$$$$10$$$
$$$12$$$$$$7$$$$$$5$$$Все $$$a_i$$$ простые
$$$13$$$$$$12$$$$$$0-12$$$
Примеры
Входные данные
5 6
42 35 11 26 13
1 3
2 4
3 5
1 5
2 2
4 5
Выходные данные
2310
10010
286
30030
35
26
Входные данные
2 1
2 2
1 2
Выходные данные
2

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

Обратите внимание на низкое ограничение по времени. Решения на языке Python стоит засылать под PyPy 3-64.

Приветствуем начинающих воров! Сегодня вам предстоит ограбить кабинет номер $$$25$$$. В снаряжении мы вам дадим лишь небольшой рюкзак, потому что ценного в месте назначения не сильно много. Однако даже такие вещи могут пригодиться Штабу! Да, рюкзак, конечно, староват, но может вместить много полезного и нужного Штабу! Периодически вам будут поступать запросы от базы. Запросы могут быть таковыми:

  1. + x. Вам велено подобрать и положить в рюкзак чокопай ценностью $$$x$$$ бурлей.
  2. - x. Срочно нужно выкинуть из рюкзака любой чокопай ценностью $$$x$$$ бурлей, чтобы не попасться Кириллу Евгеньевичу. Штаб тщательно следит за наполнением вашего рюкзака, поэтому всегда нужно выкинуть чокопай, который присутствует в рюкзаке.
  3. ? W. Владимир Евгеньевич близко, и он будет считать рюкзак подозрительным, если суммарно чокопаи в нём стоят больше $$$W$$$. База хочет узнать, какую максимальную стоимость чокопаев гипотетически можно оставить в рюкзаке, выкинув некоторые чокопаи. Чокопаи после запроса не выкидываются.
В процессе есть награбленное нельзя, поэтому если вас поймают, от следов преступления вы так легко не избавитесь. Предлагаем потренироваться в ограблении кабинета в данной задаче, чтобы на основной миссии вы не оплошали. Удачи, Штаб рассчитывает на вас!
Входные данные

В первой строке вводятся два числа $$$q$$$ и $$$g$$$ ($$$1 \le q \le 10^4$$$, $$$0 \le g \le 10$$$) — количество запросов от базы и номер группы тестов.

В следующих $$$q$$$ строках вводится запрос в соответствующем формате:

  1. + x. $$$(1 \le x \le 10^4)$$$
  2. - x. $$$(1 \le x \le 10^4)$$$. Гарантируется, что $$$x$$$ уже есть в вашем рюкзаке.
  3. ? W. $$$(0 \le W \le 10^4)$$$
Выходные данные

Для каждого запроса типа ? от базы выведите максимальную стоимость слитков, которую можно оставить.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$q$$$$$$W$$$
$$$0$$$Тесты из условия
$$$1$$$$$$q \le 16$$$$$$10$$$$$$0$$$
$$$2$$$$$$q \le 32$$$$$$12$$$$$$0-1$$$
$$$3$$$$$$q \le 300$$$$$$W \le 200$$$$$$7$$$
$$$4$$$$$$7$$$Все запросы типа $$$1$$$ и $$$2$$$ идут до всех запросов типа $$$3$$$
$$$5$$$$$$8$$$$$$4$$$Все запросы типа $$$2$$$ идут до всех запросов типа $$$3$$$
$$$6$$$$$$11$$$$$$4$$$Все запросы типа $$$1$$$ идут до всех запросов типа $$$3$$$
$$$7$$$$$$9$$$Все ценности на удаление идут в обратном порядке, что на добавление
$$$8$$$$$$12$$$Все ценности на удаление идут в том же порядке, что и на добавление
$$$9$$$$$$q \le 2000$$$$$$8$$$$$$0-3$$$
$$$10$$$$$$16$$$$$$0-9$$$
Примеры
Входные данные
10 0
+ 5
+ 6
+ 1
+ 2
- 2
? 12
? 7
+ 2
- 5
? 10
Выходные данные
12
7
9
Входные данные
14 0
+ 1
+ 1
+ 1
? 5
? 4
? 3
? 2
+ 2
+ 2
? 100
- 1
? 100
- 1
? 100
Выходные данные
3
3
3
2
7
6
5

G. Бинарный автомат
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
1024 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод
This is where the fun begins
— Anakin Skywalker

Марк откопал где-то у себя на чердаке старый автомат с двумя кнопками, с которым он играл еще в детстве. Игрушка прилично проржавела, но свой функционал продолжает выполнять. При нажатии на первую кнопку на экране появляется один $$$0$$$, а при нажатии на другую, то ли из-за старости, то ли из-за неисправности, автомат выводит сразу $$$k$$$ единиц.

Марку стало интересно, сколько различных строк длины от $$$\ell$$$ до $$$r$$$ можно получить, если автомат при нажатии на вторую кнопку показывает $$$k$$$ единиц. Но так как автомат старый, а интерес у Марка большой, вам предстоит ответить на $$$q$$$ запросов вместо автомата.

Так как ответ на любой запрос Марка может быть очень большим, посчитайте его по модулю $$$998244353$$$

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

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

В следующих $$$q$$$ строках даны три целых числа $$$\ell_i, \ r_i, \ k_i$$$ ($$$1 \le \ell_i \le r_i \le n, 1 \le k \le n$$$) — диапазон длин и количество единиц, которое печатает автомат.

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

На каждый запрос выведите количество строк, которые может автомат напечатать по модулю $$$998244353$$$.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$n$$$$$$q$$$$$$k$$$
$$$0$$$Тесты из условия
$$$1$$$$$$n \le 15$$$$$$q \le 15$$$$$$7$$$$$$0$$$
$$$2$$$$$$n \le 15$$$$$$9$$$$$$0 - 1$$$
$$$3$$$$$$n \le 5000$$$$$$q \le 5000$$$$$$11$$$$$$0 -1$$$
$$$4$$$$$$n \le 5000$$$$$$8$$$$$$0-3$$$
$$$5$$$$$$k \le 20$$$$$$9$$$$$$0-2$$$
$$$6$$$$$$12$$$$$$\ell_i = r_i = n$$$
$$$7$$$$$$20 \cdot k \ge n$$$$$$13$$$
$$$8$$$$$$n \le 50000$$$$$$q \le 50000$$$$$$21$$$$$$0, 1, 3$$$
$$$9$$$$$$10$$$$$$0-8$$$
Пример
Входные данные
8 6
1 1 1
4 8 2
1 8 3
1 8 1
4 6 2
4 6 4
Выходные данные
2
81
39
510
26
9

Прекрасный город $$$\mathbb{S}$$$
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

С незапамятных времен в прекрасный город $$$\mathbb{S}$$$ ездит делегация из нашего лицея для участия в одной небезызвестной олимпиаде. Давайте погрузимся в тот год, когда команда нашей школы впервые приехала в этот город. Тогда инфраструктура была не так развита, на улицах лежала интеллигенция, между частями города переправлялись на лодках. Однако путешествовать на лодках удовольствие не из дешевых, поэтому местным правительством было принято учредить постройку мостов между островами-частями города.

Так как построить мост так, чтобы он стоял навека, довольно сложно, мосты в городе $$$\mathbb{S}$$$ строят каждый год. В год номер $$$i$$$ с первого прибытия учеников лицея в данный город строится новый мост между островами $$$u_i$$$ и $$$v_i$$$. Некоторые мосты настолько производят впечатление, что они называются важными. Важным считается такой мост $$$v_i\leftrightarrow u_i$$$, что острова $$$u_i$$$ и $$$v_i$$$ станут несвязными при его удалении; иными словами, невозможно по любым мостам добраться от острова номер $$$u_i$$$ до $$$v_i$$$, не используя прямой мост между ними.

Так как со временем строятся все более величественные и красивые мосты, а старые неизбежно перестают становиться важными, правительству города $$$\mathbb{S}$$$ стало интересно, сколько лет тот или иной мост был важным. Так как правительство города $$$\mathbb{S}$$$ занимается в большинстве своем бюрократическими вопросами, выполнить эту задачу предстоит вам. Для каждого моста выведите количество лет, которое он будет важным, или $$$-1$$$, если он все равно останется таковым.

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

В первой строке входных данных вводятся два целых числа $$$n$$$, $$$m$$$ ($$$1 \le n,m \le 5 \cdot 10^5$$$), количество островов в городе $$$\mathbb{S}$$$ и количество лет, в течение которых строят мосты.

В следующих $$$m$$$ строках вводится по два целых числа $$$v_i, u_i$$$ ($$$1 \le u_i, v_i \le n$$$, $$$u_i \neq v_i$$$), номера островов, которые связывают в $$$i$$$-й год.

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

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

Для каждого из $$$m$$$ мостов в новой строчке выведите, сколько лет очередной мост являлся важным. Если он в итоге остался важным, выведите «$$$-1$$$» без кавычек.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$n$$$$$$m$$$
$$$0$$$Тесты из условия
$$$1$$$$$$m = n - 1$$$$$$7$$$
$$$2$$$$$$n \le 300$$$$$$m \le 300$$$$$$20$$$$$$0$$$
$$$3$$$$$$n \le 1000$$$$$$m \le 1000$$$$$$16$$$$$$0,2$$$
$$$4$$$$$$n \le 5000$$$$$$27$$$$$$0,2,3$$$
$$$5$$$$$$n \le 10^5$$$$$$m \le 10^5$$$$$$18$$$$$$0,2,3$$$
$$$6$$$$$$12$$$$$$0-5$$$
Примеры
Входные данные
5 5
4 5
1 2
3 4
2 3
1 4
Выходные данные
-1
3
2
1
0
Входные данные
2 1
1 2
Выходные данные
-1

I. Очередная задача на псп
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Правильная скобочная последовательность это строка, которая состоит только из символов «(» и «)», из которой возможно получить корректное арифметическое выражение, вставляя символы «+» и «1». Например, «», «(())» и «()()» являются правильными, а «)(» и «(()» не являются правильными скобочными последовательностями. Просто же скобочной последовательностью называется строка из символов «(» и «)».

Назовём правильностью скобочной последовательности максимальную длину её правильной скобочной подпоследовательности. Например, возьмем строку «()())((())()». Для неё правильными подпоследовательностями будут, к примеру, следующие: «$$$\color{red}{\underline{\color{red}{\text{()}}}}$$$())((())()», «$$$\color{red}{\underline{\color{red}{\text{(}}}}$$$)$$$\color{red}{\underline{\color{red}{\text{(}}}}$$$))((($$$\color{red}{\underline{\color{red}{\text{))}}}}$$$()», «$$$\color{red}{\underline{\color{red}{\text{()()}}}}$$$)$$$\color{red}{\underline{\color{red}{\text{((())}}}}$$$($$$\color{red}{\underline{\color{red}{\text{)}}}}$$$», а также другие (но поля условия слишком малы, чтобы их всех перечислить). Как видно, подпоследовательностью является наша последовательность, из которой удалили ноль или больше элементов, а порядок оставшихся не поменялся. Для данной последовательности правильность будет равна $$$10$$$ (последняя из приведённых подпоследовательностей имеет такую длину).

Дано $$$n$$$ изначально пустых скобочных последовательностей. Приходят $$$q$$$ запросов двух видов:

  • «$$$1 \ \ell \ r \ x$$$» — дописать к последовательностям на отрезке $$$[\ell, r]$$$ $$$|x|$$$ скобок. Если $$$x \gt 0$$$, то скобки открывающие, если $$$x \lt 0$$$ — закрывающие.
  • «$$$2 \ \ell \ r$$$» — вывести сумму правильностей последовательностей на отрезке $$$[\ell, r]$$$.
Входные данные

В первой строке входных данных вводится два числа $$$n$$$, $$$q$$$ ($$$1 \le n \le 5 \cdot 10^5$$$, $$$1 \le q \le 5 \cdot 10^5$$$) — количество пустых скобочных последовательностей и количество запросов.

В следующих $$$q$$$ строках вводятся числа согласно формату:

  • Вводится четыре числа «$$$1 \ \ell \ r \ x$$$», ($$$1 \le \ell,r \le n$$$, $$$1 \le |x| \le 10^6$$$)
  • Вводится три числа «$$$2 \ \ell \ r$$$», ($$$1 \le \ell,r \le n$$$)
Выходные данные

Для каждого запроса второго типа выведите сумму правильностей последовательностей на соответствующем отрезке.

Система оценки
Доп. ограниченияБаллыНеобх. группыКомментарий
$$$n$$$$$$q$$$
$$$0$$$Тесты из условия
$$$1$$$$$$n=1$$$$$$6$$$
$$$2$$$$$$15$$$$$$\ell_i = r_i$$$ в запросах первого типа
$$$3$$$$$$13$$$Баланс$$$^{\text{∗}}$$$ всех скобочных последовательностей не падает ниже $$$0$$$
$$$4$$$$$$n \le 10^4 $$$$$$q \le 10^4 $$$$$$7$$$
$$$5$$$$$$n \le 5 \cdot 10^4 $$$$$$q \le 5 \cdot 10^4 $$$$$$5$$$$$$4$$$
$$$6$$$$$$n \le 10^5 $$$$$$q \le 10^5 $$$$$$14$$$$$$5$$$
$$$7$$$$$$n \le 2 \cdot 10^5 $$$$$$q \le 2 \cdot 10^5 $$$$$$10$$$$$$6$$$
$$$8$$$$$$n \le 3 \cdot 10^5 $$$$$$q \le 3 \cdot 10^5 $$$$$$8$$$$$$7$$$
$$$9$$$$$$n \le 4 \cdot 10^5 $$$$$$q \le 4 \cdot 10^5 $$$$$$8$$$$$$8$$$
$$$10$$$$$$14$$$$$$0-9$$$

$$$^{\text{∗}}$$$Балансом скобочной последовательности считается количество открывающих $$$-$$$ количество закрывающих скобок.

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

Запросы в примере образуют строку из пояснения правильности.