Вадим очень любит путешествия. В этот раз он решил сделать замечательные фотографии двух городов с борта самолёта и опубликовать их в социальных сетях. Для того чтобы фотографии получились удачными, самолёт должен пролететь точно над центром каждого города.
Центр первого города расположен в точке $$$(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» будут приняты как положительный ответ.
51 4 3 3-1 1 -4 42 1 3 28 10 8 1-10 5 16 1
Yes Yes Yes No No
В первом наборе входных данных маршрут самолёта (выделен оранжевым) может быть таким:
Во втором наборе входных данных самолёт может повернуть в момент взлёта:
В третьем наборе входных данных маршрут самолёта может быть таким:
В четвёртом наборе входных данных не существует маршрута, на котором Вадим сможет сделать удачные фотографии.
Как известно из школьной физики, если придать физической точке вектор скорости, то в среде с постоянным ускорением свободного падения эта физическая точка полетит по параболе.
На основе этого явления разработчики мобильных игр придумали простую аркаду. В левом нижнем углу экрана расположен баскетбольный мяч, то есть изначально он находится в точке $$$(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)$$$.
36 1 4 1 36 1 4 1 2100 100 1 80 100
1 2 40500
Назовем битовой характеристикой целого положительного числа $$$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$$$.
36842
1 0 3
В первом наборе входных данных существует только одна подходящая пара: $$$(2, 4)$$$.
Во втором наборе входных данных не существует ни одной подходящей пары.
В третьем наборе входных данных существуют следующие подходящие пары: $$$(2, 40)$$$, $$$(8, 34)$$$ и $$$(10, 32)$$$.
В стране $$$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$$$.
Для каждого набора входных данных в отдельной строке выведите уровень образованности в университете.
13 3 21 1 1 13 3 3 3
3
11 1 21 1 1 11 1 1 1
1
Самолеты-самолеты-самолеты. Тут нет самолетов, но зато есть интересная задача, которую предлагаем вам решить.
Дан массив $$$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$$$) — сам массив.
Выведите единственное целое число — ответ на задачу.
41 2 3 4
8
52 3 4096 5 7
12
В первом тестовом примере подойдут пары $$$(l, r)$$$: $$$(1, 1)$$$, $$$(1, 2)$$$, $$$(1, 3)$$$, $$$(1, 4)$$$, $$$(2, 2)$$$, $$$(3, 3)$$$, $$$(3, 4)$$$, $$$(4, 4)$$$.
Как известно, «БГУИР» состоит из входа, а также $$$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 11 22 33 44 5
4 1 2 3 4
8 8 11 22 31 44 53 66 56 76 8
6 1 2 3 4 5 6
Как язык Rust гарантирует безопасную работу с памятью? Для этого вводятся такие концепции, как владение, заимствование и время жизни. Вадим, к сожалению, не смог разобраться, как установить компилятор Rust, поэтому решил потренироваться на упрощенной версии языка.
В языке, который использует Вадим, существует четыре операции:
Вадим предоставил вам последовательность операций, которая представляет некоторую программу, реализованную на этом языке. Вам нужно проверить, что программа безопасно работает с памятью; для этого после каждой операции в программе должны выполняться следующие правила:
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
В первой строке каждого набора входных данных содержится единственное целое число $$$n$$$ — количество операций в программе Вадима.
В следующих $$$n$$$ строках заданы операции в одном из следующих форматов:
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$10^5$$$.
Также предоставляются следующие гарантии:
Для каждого набора входных данных выведите «Yes» (без кавычек), если программа Вадима безопасно работает с памятью, в противном случае выведите «No» (без кавычек).
631 a2 b a3 c a31 a2 b a2 c a31 a2 b a4 a41 a2 b a4 b4 a41 a2 b a4 b3 c a11 a
No Yes No Yes Yes Yes
В первом наборе входных данных после третьей команды нарушается правило №$$$1$$$.
Во втором наборе входных данных после каждой команды на переменной $$$a$$$ существуют только Read-only ссылки.
В третьем наборе входных данных после третьей команды нарушается правило №$$$2$$$.
В пятом наборе входных данных Writable ссылка создается после удаления Read-only ссылки, поэтому правило №$$$1$$$ не нарушается.
Есть $$$n$$$ аэропортов, пронумерованных целыми числами от $$$1$$$ до $$$n$$$. У каждого аэропорта есть свой класс обслуживания, для $$$i$$$-го аэропорта это некоторое целое число $$$a_i$$$.
Авиакомпания «Беда» осуществляет авиаперелёты с соблюдением особых условий, необходимых для поддержания высокого качества обслуживания. Так, из аэропорта $$$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$$$ — для которых хочется определить выгоду абонемента.
Для каждого набора входных данных выведите единственное целое число — выгоду абонемента.
14 31 1 3 21 21 32 4
2 2 1
К Саше на день рождения пришло $$$5$$$ друзей и принесли с собой следующие подарки:
При этом друзья заранее договорились о подарках, а поэтому гарантируется, что $$$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$$$.
45 5 0 2 3 31 4 0 0 0 13 3 1 0 0 22 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
На собеседовании в одну крупную авиакомпанию в качестве испытания кандидату предлагают сыграть в особые шахматы. Здесь шахматное поле представлено в виде неориентированного графа, состоящего из $$$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» (без кавычек), если кандидат не сможет гарантировать победу, играя за одну из фигур.
24 4 21 2 12 3 23 4 14 1 21 3 king1 3 queen6 6 11 2 12 3 23 4 14 5 25 6 16 1 21 3 queen
queen king draw
Дан массив целых чисел $$$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 35 1 1 1 541 54 21 63 2
6 4 10 1 7 1 7 3 8 1
Проиграв все деньги на подарок, Саша решил подарить другой подарок, а точнее — помочь своей девушке со следующим домашним заданием:
Определим функцию $$$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».
5301041000400104110141111
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$$$)
Мадока уже закончила писать муниципальный этап в Новосибирске и пошла домой ждать результатов закрытого тестирования.
На олимпиаде была ровно одна задача — дана перестановка чисел от $$$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$$$.