BSUIR Open XIII: Школьный финал
A. Фотографии в полёте
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Центр первого города расположен в точке $$$(x_1, y_1)$$$, а центр второго города расположен в точке $$$(x_2, y_2)$$$, при этом оба города расположены над прямой $$$y = 0$$$ (то есть $$$y_1, y_2 \ge 1$$$).

Самолёт, на котором полетит Вадим, будет взлетать с взлётной полосы, расположенной на прямой $$$x = 0$$$. Самолёт взлетает в точке $$$(0, 0)$$$ по направлению взлётной полосы в сторону увеличения координаты $$$y$$$, либо же в сторону уменьшения координаты $$$y$$$, при том не меняя координату $$$x$$$.

Не более одного раза в любой момент своего полёта (в том числе в момент взлёта) самолёт может сделать поворот — полететь по прямой в произвольном направлении из текущей точки.

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

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

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

Единственная строка каждого набора входных данных содержит четыре целых числа $$$x_1$$$, $$$y_1$$$, $$$x_2$$$ и $$$y_2$$$ ($$$-10^9 \le x_1, x_2 \le 10^9$$$, $$$1 \le y_1, y_2 \le 10^9$$$) — координаты центра первого города и второго города соответственно. Гарантируется, что $$$(x_1, y_1) \ne (x_2, y_2)$$$, то есть центры городов не совпадают.

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

Для каждого набора входных данных выведите «Yes» (без кавычек), если Вадим сможет сделать удачные фотографии, в противном случае выведите «No» (без кавычек).

Вы можете выводить каждую букву в любом регистре (строчную или заглавную). Например, строки «yEs», «yes», «Yes» и «YES» будут приняты как положительный ответ.

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

В первом наборе входных данных маршрут самолёта (выделен оранжевым) может быть таким:

Во втором наборе входных данных самолёт может повернуть в момент взлёта:

В третьем наборе входных данных маршрут самолёта может быть таким:

В четвёртом наборе входных данных не существует маршрута, на котором Вадим сможет сделать удачные фотографии.

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

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

На основе этого явления разработчики мобильных игр придумали простую аркаду. В левом нижнем углу экрана расположен баскетбольный мяч, то есть изначально он находится в точке $$$(0,0)$$$. В любой момент пользователь может нажать на экран телефона, и если в этот момент мяч находился в точке $$$(x_0, y_0)$$$, то вне зависимости от его скорости или положения он полетит по параболе, заданной уравнением $$$y = - a(x-x_0)^2 + b(x-x_0) + y_0$$$.

Экран телефона имеет ширину $$$w$$$, поэтому если мяч в какой-то момент окажется в точке вида $$$(w, y)$$$, то он мгновенно телепортируется в точку $$$(0, y)$$$, сохранив при этом свой вектор-скорости. То есть после телепорта траектория шара не изменится, и он продолжит движение по той же параболе, но смещенной на $$$w$$$ единиц влево (см. рисунок)

Пример траектории полета мяча

Баскетбольный мяч в игре отличается от обычного тем, что не отскакивает от пола и не катается по нему. Вычислите, за какое минимальное количество нажатий по экрану игрок может добиться того, чтобы мяч оказался в точке $$$(x_b, y_b)$$$.

Обратите внимание, что игрок может нажимать на экран в любой момент времени, в том числе в момент времени, когда мяч располагается в нецелых точках или когда $$$x=0$$$.

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

В первой строке находится единственное число $$$t$$$ ($$$1 \le t \le 30\,000$$$) — количество наборов входных данных. Далее следуют описания наборов.

Каждый набор описывается единственной строкой, в которой указаны целые числа $$$w$$$, $$$a$$$, $$$b$$$, $$$x_b$$$, $$$y_b$$$ ($$$2 \le w \le 100$$$, $$$1 \le a, b \le 100$$$, $$$1 \le x_b \le w-1$$$, $$$1 \le y_b \le 100$$$).

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

Для каждого набора выведите единственное число — минимальное количество нажатий по экрану, которое придется сделать игроку, чтобы мяч оказался в точке $$$(x_b, y_b)$$$.

Пример
Входные данные
3
6 1 4 1 3
6 1 4 1 2
100 100 1 80 100
Выходные данные
1
2
40500

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

Назовем битовой характеристикой целого положительного числа $$$n$$$ количество пар целых чисел $$$i$$$ и $$$j$$$ ($$$1 \le i \lt j$$$) таких, что $$$i \oplus j = n$$$$$$^{\text{∗}}$$$ и $$$i \lor j = n$$$$$$^{\text{†}}$$$.

Вычислите значение битовой характеристики данного числа $$$n$$$.

$$$^{\text{∗}}$$$$$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ.

$$$^{\text{†}}$$$$$$\lor$$$ обозначает операцию побитового ИЛИ.

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

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

Единственная строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 10^9$$$) — число, для которого необходимо определить битовую характеристику.

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

Для каждого набора входных данных выведите единственное целое число — значение битовой характеристики числа $$$n$$$.

Пример
Входные данные
3
6
8
42
Выходные данные
1
0
3
Примечание

В первом наборе входных данных существует только одна подходящая пара: $$$(2, 4)$$$.

Во втором наборе входных данных не существует ни одной подходящей пары.

В третьем наборе входных данных существуют следующие подходящие пары: $$$(2, 40)$$$, $$$(8, 34)$$$ и $$$(10, 32)$$$.

D. Лекции в BOPEN SUIR
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В стране $$$N$$$ вплотную занялись образованием граждан. Президент страны считает, что абсолютно все люди должны изучать что-то новое, даже студенты университета BOPEN SUIR.

Университет можно представить как таблицу из аудиторий на $$$n$$$ строк и $$$m$$$ столбцов, где в аудитории из $$$i$$$ строки и $$$j$$$ столбца проживает очередной студент. Было принято решение провести ровно $$$q$$$ лекций. На каждой лекции будет рассказываться уникальный материал, которого нет ни на какой другой лекции. $$$i$$$-я лекция задаётся четырьмя параметрами $$$lx_i, ly_i, rx_i, ry_i$$$ ($$$1\le lx_i \le rx_i \le n, 1\le ly_i \le ry_i \le m$$$). Такая лекция будет слышна только из аудиторий, находящихся в прямоугольнике, заданном этими четырьмя числами. Иными словами, студент из аудитории $$$(x, y)$$$ услышит лекцию $$$i$$$ тогда и только тогда, когда $$$lx_i \le x \le rx_i, ly_i \le y \le ry_i$$$.

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

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

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

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

Следующие $$$q$$$ строк содержат описание лекций в формате, указанном в условии. $$$i$$$-я из следующих строк содержит 4 целых числа $$$lx_i, ly_i, rx_i, ry_i$$$ ($$$1\le lx_i \le rx_i \le n, 1\le ly_i \le ry_i \le m$$$).

Гарантируется, что сумма $$$n \cdot m$$$ по всем наборам входных данных не превосходит $$$5 \cdot 10^5$$$.

Гарантируется, что сумма $$$q$$$ по всем наборам входных данных не превосходит $$$5 \cdot 10^5$$$.

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

Для каждого набора входных данных в отдельной строке выведите уровень образованности в университете.

Примеры
Входные данные
1
3 3 2
1 1 1 1
3 3 3 3
Выходные данные
3
Входные данные
1
1 1 2
1 1 1 1
1 1 1 1
Выходные данные
1

E. Самолеты-самолеты
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Самолеты-самолеты-самолеты. Тут нет самолетов, но зато есть интересная задача, которую предлагаем вам решить.

Дан массив $$$a_1, a_2, \ldots, a_n$$$. Отрезок $$$l, r$$$ ($$$1 \leq l \leq r \leq n$$$) называется хорошим, если выполняется следующее условие:

Для каждого $$$i$$$ от $$$1$$$ до $$$r - l + 1$$$ найдется такое $$$j$$$ ($$$l \leq j \leq r$$$), что $$$a_j = x^i$$$ для какого-то целого числа $$$x$$$.

Требуется сказать, сколько существует хороших отрезков.

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

В первой строке записано единственное число $$$n$$$ ($$$1 \leq n \leq 10^5$$$) — длина массива.

Во второй строке записано $$$n$$$ чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \leq a_i \leq 10^9$$$) — сам массив.

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

Выведите единственное целое число — ответ на задачу.

Примеры
Входные данные
4
1 2 3 4
Выходные данные
8
Входные данные
5
2 3 4096 5 7
Выходные данные
12
Примечание

В первом тестовом примере подойдут пары $$$(l, r)$$$: $$$(1, 1)$$$, $$$(1, 2)$$$, $$$(1, 3)$$$, $$$(1, 4)$$$, $$$(2, 2)$$$, $$$(3, 3)$$$, $$$(3, 4)$$$, $$$(4, 4)$$$.

F. Путешествие по университету
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Как известно, «БГУИР» состоит из входа, а также $$$n - 1$$$ аудиторий, пронумерованных целыми числами от $$$2$$$ до $$$n$$$, а вход имеет номер $$$1$$$. Также в университете есть $$$m$$$ коридоров, соединяющие различные аудитории, либо же вход с аудиторией. При том логично, что из входа можно добраться до любой другой аудитории, перемещаясь по коридорам университета.

Саша впервые оказался в этом замечательном университете и хочет добраться до лекционных аудиторий, чтобы узнать много нового. Но «БГУИР» не маленький, поэтому за первый день он может пройти не более чем по $$$k$$$ коридорам. Но так как за день Саша узнает много нового, то после каждого дня он может пройти на один коридор больше. Таким образом, на второй день Саша может пройти не более $$$k + 1$$$ коридор, в третий $$$k + 2$$$ и так далее.

Но пока Саша слушает интересные лекции, «БГУИР» развивается семимильными шагами. А точнее, ночью каждого дня, посередине каждого коридора образуется еще одна аудитория $$$a$$$. Так, если коридор соединял аудитории ($$$v, u$$$), то на утро коридор между этими аудиториями ликвидируют, а на его место появляются два новых ($$$v, a$$$) и ($$$a, u$$$). При том для каждого коридора аудитория по середине является уникальной, а все коридоры ликвидируют одновременно.

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

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

Первая строка каждого набора входных данных содержит три целых числа $$$n$$$, $$$m$$$ и $$$k$$$ ($$$2 \leq n \leq 2 \cdot 10^5$$$, $$$n - 1 \leq m \leq 2 \cdot 10^5$$$, $$$1 \leq k \leq n$$$) — количество объектов в университете с самого начала, количество коридоров и изначальное количество коридоров, которое Саша может проходить за один день. Где количество объектов — это количество аудиторий и вход.

Каждая из следующих $$$m$$$ строк содержит два целых числа $$$v$$$ и $$$u$$$ ($$$1 \leq v, u \leq n$$$, $$$v \neq u$$$) — номера объектов, которые соединяет очередной коридор.

Гарантируется, что нет двух коридоров, соединяющих одинаковую пару объектов.

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

Выведите в первой строке, до скольки изначальных объектов Саша сможет добраться. А во второй строке выведите их в порядке возрастания.

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

G. Безопасная работа с памятью
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

В языке, который использует Вадим, существует четыре операции:

  • 1 $$$a$$$ — создать переменную с названием $$$a$$$.
  • 2 $$$b$$$ $$$a$$$ — создать Read-only ссылку с названием $$$b$$$ на переменную с названием $$$a$$$.
  • 3 $$$b$$$ $$$a$$$ — создать Writable ссылку с названием $$$b$$$ на переменную с названием $$$a$$$.
  • 4 $$$a$$$ — удалить переменную либо ссылку с названием $$$a$$$.

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

  1. На каждую переменную может ссылаться только один вид ссылок, но не два одновременно:
    • одна или более Read-only ссылок;
    • ровно одна Writable ссылка.
  2. Каждая ссылка ссылается на существующую переменную (неудаленную).
Входные данные

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

В первой строке каждого набора входных данных содержится единственное целое число $$$n$$$ — количество операций в программе Вадима.

В следующих $$$n$$$ строках заданы операции в одном из следующих форматов:

  • 1 $$$a$$$ — создать переменную с названием $$$a$$$ ($$$1 \le |a| \le 10$$$).
  • 2 $$$b$$$ $$$a$$$ — создать Read-only ссылку с названием $$$b$$$ на переменную с названием $$$a$$$ ($$$1 \le |a|, |b| \le 10$$$).
  • 3 $$$b$$$ $$$a$$$ — создать Writable ссылку с названием $$$b$$$ на переменную с названием $$$a$$$ ($$$1 \le |a|, |b| \le 10$$$).
  • 4 $$$a$$$ — удалить переменную либо ссылку с названием $$$a$$$ ($$$1 \le |a| \le 10$$$).

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$10^5$$$.

Также предоставляются следующие гарантии:

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

Для каждого набора входных данных выведите «Yes» (без кавычек), если программа Вадима безопасно работает с памятью, в противном случае выведите «No» (без кавычек).

Пример
Входные данные
6
3
1 a
2 b a
3 c a
3
1 a
2 b a
2 c a
3
1 a
2 b a
4 a
4
1 a
2 b a
4 b
4 a
4
1 a
2 b a
4 b
3 c a
1
1 a
Выходные данные
No
Yes
No
Yes
Yes
Yes
Примечание

В первом наборе входных данных после третьей команды нарушается правило №$$$1$$$.

Во втором наборе входных данных после каждой команды на переменной $$$a$$$ существуют только Read-only ссылки.

В третьем наборе входных данных после третьей команды нарушается правило №$$$2$$$.

В пятом наборе входных данных Writable ссылка создается после удаления Read-only ссылки, поэтому правило №$$$1$$$ не нарушается.

H. Покупка абонемента
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Есть $$$n$$$ аэропортов, пронумерованных целыми числами от $$$1$$$ до $$$n$$$. У каждого аэропорта есть свой класс обслуживания, для $$$i$$$-го аэропорта это некоторое целое число $$$a_i$$$.

Авиакомпания «Беда» осуществляет авиаперелёты с соблюдением особых условий, необходимых для поддержания высокого качества обслуживания. Так, из аэропорта $$$x$$$ существует перелёт только в следующие аэропорты:

  • В аэропорт $$$y$$$, такой что $$$y \gt x$$$ и $$$a_y \gt a_x$$$, и не существует такого аэропорта $$$z$$$, что $$$x \lt z \lt y$$$ и $$$a_z \gt a_x$$$.
  • В аэропорт $$$y$$$, такой что $$$y \gt x$$$ и $$$a_y \lt a_x$$$, и не существует такого аэропорта $$$z$$$, что $$$x \lt z \lt y$$$ и $$$a_z \lt a_x$$$.
  • В аэропорт $$$y$$$, такой что $$$y \lt x$$$ и $$$a_y \gt a_x$$$, и не существует такого аэропорта $$$z$$$, что $$$y \lt z \lt x$$$ и $$$a_z \gt a_x$$$.
  • В аэропорт $$$y$$$, такой что $$$y \lt x$$$ и $$$a_y \lt a_x$$$, и не существует такого аэропорта $$$z$$$, что $$$y \lt z \lt x$$$ и $$$a_z \lt a_x$$$.

Вас интересуют $$$q$$$ запросов $$$l_i, r_i$$$ таких, что $$$1 \le l_i \le r_i \le n$$$ на покупку абонемента, позволяющего не платить за перелёт, если номера обоих аэропортов находятся в промежутке от $$$l_i$$$ до $$$r_i$$$ включительно. Выгода такого абонемента определяется как количество различных групп аэропортов с номерами в промежутке от $$$l_i$$$ до $$$r_i$$$ включительно, внутри которых можно бесплатно перемещаться. Два аэропорта $$$x$$$ и $$$y$$$ находятся в одной группе, если существует бесплатный маршрут как из $$$x$$$ в $$$y$$$, так и из $$$y$$$ в $$$x$$$. Для каждого запроса требуется определить выгоду абонемента.

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

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 1\,000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

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

Во второй строке задано $$$n$$$ целых чисел $$$a_i$$$ ($$$1 \le a_i \le 10^9$$$) — значения класса обслуживания соответствующих аэропортов.

В следующих $$$q$$$ строках задано по два целых числа $$$l_i$$$ и $$$r_i$$$ — для которых хочется определить выгоду абонемента.

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

Для каждого набора входных данных выведите единственное целое число — выгоду абонемента.

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

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

К Саше на день рождения пришло $$$5$$$ друзей и принесли с собой следующие подарки:

  • Кирилл подарил Саше клеточное поле $$$n \times m$$$;
  • Филипп подарил $$$a$$$ одноклеточных квадратов;
  • Аня подарила $$$b$$$ прямоугольников размером $$$1 \times 2$$$;
  • Юра подарил Саше $$$c$$$ уголков из трех клеток и $$$c$$$ прямоугольников $$$1 \times 3$$$;
  • Большой горилл подарил Саше $$$d$$$ квадратов $$$2 \times 2$$$.

При этом друзья заранее договорились о подарках, а поэтому гарантируется, что $$$a + 2b + 3c + 4d = n \cdot m$$$. Саша до этого хвастался друзьям, что умеет вкладывать в любой прямоугольник максимальное количество уголков, а поэтому друзья решили проверить навыки Саши, но уже задав ему новую задачку:

Саше требуется полностью покрыть прямоугольник $$$n \times m$$$ фигурами, которые подарили друзья, при этом он должен использовать все $$$a$$$ фигурок Филиппа, все $$$b$$$ фигурок Ани, какие-то $$$c$$$ фигурок Юры и все фигурки большого горилла.

Помогите Саше и напишите программу, которая решает поставленную задачу или определяет, что решения не существует.

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

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

Каждый набор данных описывается единственной строкой, в которой указаны неотрицательные целые числа $$$n$$$, $$$m$$$, $$$a$$$, $$$b$$$, $$$c$$$ и $$$d$$$ ($$$1 \le n \le 1000$$$, $$$1 \le m \le 1000$$$, $$$a+2b+3c+4d=n m$$$).

Гарантируется, что сумма $$$n m$$$ по всем наборам входных данных не превосходит $$$10^6$$$.

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

Для каждого набора входных данных выведите «No», если решить задачу невозможно.

В ином случае выведите «Yes» в своей строке, а в следующих $$$n$$$ строках выведите по $$$m$$$ чисел $$$z_{i j}$$$. Одну использованную фигуру следует обозначать одним и тем же номером, а разные фигуры — разными. Номера фигур могут быть любыми числами от $$$1$$$ до $$$n \cdot m$$$.

Пример
Входные данные
4
5 5 0 2 3 3
1 4 0 0 0 1
3 3 1 0 0 2
2 2 2 1 0 0
Выходные данные
Yes
1 1 4 2 2 
1 1 4 2 2 
6 6 3 3 5 
7 6 3 3 5 
7 7 8 8 5 
No
No
Yes 
1 2 
3 3 

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

На собеседовании в одну крупную авиакомпанию в качестве испытания кандидату предлагают сыграть в особые шахматы. Здесь шахматное поле представлено в виде неориентированного графа, состоящего из $$$n$$$ вершин, соединенных $$$m$$$ ребрами двух цветов — белого и черного. В вершинах с номерами $$$k$$$ и $$$q$$$ расположены фигуры короля и ферзя соответственно. Кандидат может выбрать, за какую фигуру он будет играть, а собеседующий выберет оставшуюся. Игроки выполняют ходы поочередно, первым ходит игрок, играющий за фигуру $$$X$$$. За один ход король может перемещаться в любую вершину, соединенную ребром с текущей, а ферзь может перемещаться в любую вершину, до которой существует путь из текущей вершины, состоящий из ребер одного цвета. Побеждает игрок, после хода которого фигуры оказались в одной вершине. Если побеждает кандидат, то собеседование считается пройденным.

Теперь вы интересуетесь для некоторых конфигураций игры $$$k$$$, $$$q$$$ и $$$X$$$, за какую фигуру нужно играть, чтобы гарантировать победу и, естественно, успешное прохождение собеседования.

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

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 50$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

В первой строке набора входных данных задано три целых числа $$$n$$$, $$$m$$$ и $$$l$$$ ($$$2 \le n \le 100$$$, $$$1 \le m \le 100$$$, $$$1 \le l \le 5 \cdot 10^5$$$) — количество вершин в графе, ребер и количество конфигураций игры соответственно.

В следующих $$$m$$$ строках задано по 3 целых числа $$$u$$$, $$$v$$$ и $$$c$$$ ($$$1 \le u, v \le n$$$, $$$u \ne v$$$, $$$c \in \{1, 2\}$$$) — номера вершин, соединенных ребром, и цвет ребра. Гарантируется, что граф состоит из одной компоненты связности и не содержит кратных ребер.

В следующих $$$l$$$ строках задано два целых числа $$$k$$$ и $$$q$$$ ($$$1 \le k, q \le n$$$, $$$k \ne q$$$) и строка $$$X$$$ — номера вершин, где расположены король и ферзь, и название фигуры, которая должна выполнить первый ход. Если задано «queen» (без кавычек), то первым ходит игрок, играющий за ферзя, если «king» (без кавычек) — игрок, играющий за короля.

Гарантируется, что сумма $$$n$$$ и сумма $$$m$$$ по всем наборам входных данных не превышают $$$100$$$, а сумма $$$l$$$ не превышает $$$5 \cdot 10^5$$$.

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

Для каждого набора входных данных для каждой конфигурации игры выведите «king» (без кавычек), если кандидат должен выбрать короля, чтобы гарантировать победу, «queen» (без кавычек), если кандидат должен выбрать ферзя, и «draw» (без кавычек), если кандидат не сможет гарантировать победу, играя за одну из фигур.

Пример
Входные данные
2
4 4 2
1 2 1
2 3 2
3 4 1
4 1 2
1 3 king
1 3 queen
6 6 1
1 2 1
2 3 2
3 4 1
4 5 2
5 6 1
6 1 2
1 3 queen
Выходные данные
queen
king
draw

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

Дан массив целых чисел $$$a_1, a_2, \ldots, a_n$$$ и целое число $$$k$$$. А также $$$q$$$ запросов изменения массива: заменить $$$i$$$-й элемент массива $$$a$$$ на $$$x$$$.

После каждого запроса, а также для исходного массива, нужно сказать, чему равно максимальное значение $$$a_i + a_j$$$, где $$$1 \leq i \lt j \leq n$$$, $$$j - i \lt k$$$, а также сколько таких пар $$$(i, j)$$$, дающих максимальное значение, существует.

Обратите внимание, что в этой задаче необходимо отвечать на запросы в «онлайне».

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

В первой строке записаны два числа $$$n$$$ и $$$k$$$ ($$$2 \leq n \leq 10^5$$$, $$$2 \leq k \leq n$$$).

Во второй строке записаны $$$n$$$ чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \leq a_i \leq 10^9$$$).

В третьей строке записано единственное число $$$q$$$ ($$$1 \leq q \leq 10^5$$$). Затем в следующих $$$q$$$ строк идет описание запросов изменения.

На каждый запрос вводится два числа $$$i$$$ и $$$x$$$ ($$$1 \leq i \leq n$$$, $$$1 \leq x \leq 10^9$$$) и пусть ответ для предыдущего запроса $$$(\textrm{mx}, \textrm{cnt})$$$, где $$$\textrm{mx}$$$ — максимальная сумма, а $$$\textrm{cnt}$$$ — сколько таких пар было. Тогда нужно будет изменить значение элемента $$$((i + \textrm{mx} + \textrm{cnt}) \bmod n) + 1$$$ на значение $$$x$$$.

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

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

Пример
Входные данные
5 3
5 1 1 1 5
4
1 5
4 2
1 6
3 2
Выходные данные
6 4
10 1
7 1
7 3
8 1

L. Саша и домашнее задание
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Проиграв все деньги на подарок, Саша решил подарить другой подарок, а точнее — помочь своей девушке со следующим домашним заданием:

Определим функцию $$$f(x) = (x \wedge (x + 1)) \oplus (x \wedge (x - 1))$$$.

Где $$$\wedge$$$ означает операцию побитового И, а $$$\oplus$$$ означает операцию побитового исключающего ИЛИ.

Определим функцию $$$g(x)$$$, равную количеству $$$y$$$ ($$$1 \leq y \leq 2^n - 1$$$), для которых выполняется $$$f(y) = x$$$.

Также дано число $$$a$$$ ($$$0 \leq a \leq 2^n - 1$$$). Требуется найти максимальное значение $$$a \oplus g(x)$$$.

Помогите Саше сделать приятно своей девушке и решите за него ее домашнюю работу.

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

Данная задача состоит из нескольких наборов входных данных. В первой строке задано единственное число $$$t$$$ ($$$1 \leq t \leq 5000$$$) — количество наборов входных данных. Затем идет их описание.

В первой строке задано единственное число $$$n$$$ ($$$3 \leq n \leq 10^5$$$).

Во второй строке задана строка $$$a$$$, состоящая только из символов «0» или «1», длины $$$n$$$, задающая число $$$a$$$ в двоичной системе счисления.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$10^5$$$.

Или же, другими словами, число, задаваемое строкой, будет равно $$$2^{n - 1} \cdot a_1 + 2^{n - 2} \cdot a_2 + \ldots + 2^{0} \cdot a_n$$$.

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

Для каждого набора входных данных выведите ответ на задачу в качестве бинарной строки из «0» и «1».

Пример
Входные данные
5
3
010
4
1000
4
0010
4
1101
4
1111
Выходные данные
011
1110
0110
1111
1111
Примечание

Рассмотрим первый тестовый случай:

$$$ f(1) = 0, f(2) = 2, f(3) = 2, f(4) = 4, f(5) = 0, f(6) = 2, f(7) = 6 $$$

Следовательно:

$$$ g(0) = 2, g(2) = 3, g(6) = 1, g(4) = 1 $$$

А значит, максимальное значение достигается при $$$x = 2$$$ или $$$x = 6$$$. ($$$2 \oplus 1 = 3$$$)

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

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

На олимпиаде была ровно одна задача — дана перестановка чисел от $$$1$$$ до $$$n$$$: $$$p_1, p_2, \ldots, p_n$$$. Нужно узнать, какое минимальное раз можно поменять местами соседние элементы, чтобы перестановка стала отсортированной в порядке возрастания.

Но Мадока решила её следующим образом: $$$k + \frac{|1 - p_1| + |2 - p_2| + \ldots + |n - p_n|}{2}$$$. Так как жюри знает, кто отец Мадоки, то, чтобы не потерять работу, они должны сделать такие тесты, чтобы решение Мадоки было верным. И поэтому им стало интересно, сколько существует перестановок длины $$$n$$$, для которых решение Мадоки выведет верный ответ на задачу, но так как ответ на задачу может быть слишком большим, то выведите его по модулю $$$10^9 + 7$$$.

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

В единственной строке через пробел заданы два числа $$$n, k$$$ ($$$2 \leq n \leq 17$$$, $$$0 \leq k \leq 50$$$).

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

В единственной строке выведите ровно число — количество перестановок длины $$$n$$$ по модулю $$$10^9 + 7$$$, для которых минимальное количество свапов соседних элементов для сортировки равно $$$k + \frac{|1 - p_1| + |2 - p_2| + \ldots + |n - p_n|}{2}$$$.

Примеры
Входные данные
3 1
Выходные данные
1
Входные данные
3 0
Выходные данные
5
Входные данные
4 0
Выходные данные
14
Примечание

В первом примере подходит только перестановка $$$3, 2, 1$$$, для неё минимальное количество свапов — $$$3$$$, а у Мадоки ответ — $$$\frac{|1 - 3| + |2 - 2| + |3 - 1|}{2} + 1=2 + 1 = 3$$$.