Innopolis Open 2022-2023. Второй отборочный тур
A. Homework
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Задан набор букв $$$A$$$, состоящий из маленьких букв английского алфавита. Найдите два слова, $$$B$$$ и $$$C$$$, использующие все эти буквы (то есть, являющиеся анаграммами $$$A$$$), что $$$B$$$ и $$$C$$$ содержат разные буквы в каждой позиции. Составленные слова не обязаны быть реальными словами какого-либо языка.

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

В единственной строке содержится строка $$$A$$$ из маленьких букв английского алфавита. Длина $$$A$$$ находится в пределах от $$$1$$$ до $$$1000$$$.

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

Если ответ существует, выведите две строки, $$$B$$$ и $$$C$$$, каждая из которых является анаграммой $$$A$$$ (содержит все те же буквы, в том же количестве, как и $$$A$$$, возможно, в другом порядке). Для любой позиции $$$i$$$ от $$$1$$$ до длины $$$A$$$, $$$B_i$$$ должно быть не равно $$$C_i$$$.

Если же такие слова $$$B$$$ и $$$C$$$ составить невозможно, выведите «IMPOSSIBLE». Если существует несколько корректных пар слов, можно вывести любую.

Система оценки
ПодзадачаБаллыОграничения
130В $$$A$$$ все буквы различны
230Длина $$$A$$$ не превосходит $$$10$$$
340Без дополнительных ограничений
Примеры
Входные данные
nala
Выходные данные
alan
lana
Входные данные
abacaba
Выходные данные
IMPOSSIBLE
Входные данные
innopolisopen
Выходные данные
noepsilonnopi
opinionnpoles

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

Популярная компания Matryoshka Inc, производящая игрушки, планирует запустить акцию, в ходе которой всем желающим будет предложено решить следующую задачу: в ряд расставлены $$$n$$$ матрешек, пронумерованные от $$$1$$$ до $$$n$$$; $$$i$$$-я из них имеет размер $$$s_i$$$, причем $$$s_i$$$ может иметь лидирующие нули. Участникам предлагается собрать цепочку из как можно большего числа вложенных матрешек. Однако, есть ограничение, что собирать матрешки можно только в порядке слева направо, от меньшей к большей (матрешки можно пропускать, не обязательно использовать все подряд).

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

Директора компании заинтересовало, какой максимальный выигрыш сможет получить участник. Чтобы это выяснить, он отправил вам числа $$$s_1, \ldots, s_n$$$ по специальному секретному каналу связи компании Matryoshka Inc. Однако в ходе передачи сообщения произошел сбой, и цифры в числах $$$s_1, \ldots, s_n$$$ перемешались. В итоге вы получили набор чисел $$$a_1, \ldots, a_n$$$, где $$$a_i$$$ — число, полученное из $$$s_i$$$ некоторой перестановкой цифр.

Поскольку до запуска акции осталось всего ничего, времени на повторную отправку нет. Поэтому директор попросил вас найти максимальный возможный выигрыш участника по известным значениям $$$a_1, \ldots, a_n$$$. Учитывайте, что в теории настоящий размер $$$i$$$-й матрешки может быть равен любой перестановке цифр $$$a_i$$$, в том числе содержащей ведущие нули.

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

Первая строка содержит одно число $$$n$$$ ($$$1 \le n \le 1000$$$) — количество матрешек, участвующих в акции.

Вторая строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i \lt 10^{18}$$$) — числа, полученные вами по секретному каналу связи. Длина каждого числа, включая ведущие нули, не превосходит $$$18$$$ цифр.

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

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

Система оценки

Обозначим за $$$L$$$ максимальную длину входного числа $$$a_i$$$.

ПодзадачаБаллыОграничения
112$$$n \le 3$$$
28$$$n \le 18$$$
39$$$L = 1$$$
417$$$L \le 3$$$
526$$$n \le 200, 1 \le L \le 8$$$
628Без дополнительных ограничений
Примеры
Входные данные
2
1 1
Выходные данные
1
Входные данные
5
10 2 30 4 50
Выходные данные
5
Входные данные
6
77 88 91 22 33 44
Выходные данные
4
Входные данные
3
390100 200200 012
Выходные данные
3
Примечание

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

Рассмотрим второй пример. Если предпололжить, что настоящие размеры матрешек равны $$$01$$$, $$$2$$$, $$$03$$$, $$$4$$$, $$$05$$$, то участник может собрать цепочку из пяти матрешек. Поэтому ответ на второй пример — $$$5$$$.

Рассмотрим третий пример. В этом случае существует всего два варинта настоящей последовательности размеров матрешек, которую вам отправляли по секретному каналу. Первая из них: $$$77$$$, $$$88$$$, $$$91$$$, $$$22$$$, $$$33$$$, $$$44$$$. Вторая: $$$77$$$, $$$88$$$, $$$19$$$, $$$22$$$, $$$33$$$, $$$44$$$. Как несложно видеть, в первом случае длина максимальной цепочки из матрешек равна $$$3$$$, а во втором случае — $$$4$$$. Поэтому ответ на третий пример  — $$$4$$$.

Рассмотрим четвертый пример. Если предположить, что настоящие размеры матрешек равны $$$000139$$$, $$$000202$$$, $$$210$$$, то участник может собрать цепочку из трех матрешек, сначала вложив первую матрешку внутрь второй, а затем вложив первые две матрешки внутрь третьей. Таким образом, ответ на четвертый пример — $$$3$$$.

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

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

Замок состоит из последовательности ячеек, на каждой из которых написано целое число. Ячейки можно менять местами, при правильной перестановке замок открывается. Замок откроется при следующем условии: для любой пары соседних ячеек сумма чисел на них не делится на $$$k$$$.

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

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 10^5$$$, $$$1 \le k \le 10^9$$$) — количество ячеек в замке и число $$$k$$$ из условия.

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

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

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

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

Система оценки
ПодзадачаБаллыОграничения
$$$1$$$$$$8$$$$$$n \le 8$$$
$$$2$$$$$$8$$$$$$k = 2$$$
$$$3$$$$$$8$$$$$$k = 3$$$
$$$4$$$$$$8$$$$$$n = k$$$, числа $$$a_i$$$ различны и лежат от $$$1$$$ до $$$n$$$
$$$5$$$$$$25$$$$$$k$$$ — нечетное
$$$6$$$$$$43$$$Без дополнительных ограничений
Примеры
Входные данные
3 4
1 3 2
Выходные данные
YES
1 2 3 
Входные данные
5 4
1 2 2 2 4
Выходные данные
YES
2 4 2 1 2 

D. The Name of the Fourth Problem
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рассмотрим бесконечную последовательность чисел $$$a_1, a_2, a_3, \ldots$$$. Последовательность называется само-описывающей, если $$$a_i$$$ равно количеству вхождений числа $$$i$$$ в эту последовательность.

Если наложить на последовательность условия $$$a_1 = 1$$$, а также то, что элементы не убывают, (то есть, $$$a_i \le a_{i+1}$$$ для всех $$$i$$$), то само-описывающая последовательность определяется уникально. Первые тридцать элементов последовательности выглядят так:

$$$$$$ 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, \ldots $$$$$$

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

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

В первой строке содержится число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество запросов, которые нужно выполнить. Каждая из следующих $$$t$$$ строк содержит два числа $$$l_i$$$ и $$$r_i$$$ ($$$1 \le l_i \le r_i \le 10^{15}$$$), означающие, что в $$$i$$$-м запросе необходимо вычислить $$$\sum_{k=l_i}^{r_i} a_k$$$.

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

Выведите $$$t$$$ строк, каждая с одним числом — ответом на очередной запрос. Поскольку ответ может быть большим, выведите его остаток от деления на $$$1\,000\,000\,007$$$.

Система оценки
ПодзадачаБаллыОграничения
112$$$l_i = r_i$$$; $$$r_i \le 1000$$$
27$$$l_i = r_i$$$; $$$r_i \le 10^6$$$
38$$$r_i \le 10^6$$$
430$$$r_i \le 10^{10}$$$
543Без дополнительных ограничений
Пример
Входные данные
5
1 1
2 2
3 4
56 56
5 13
Выходные данные
1
2
5
14
42

E. Comparing Theories
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

В данной задаче эволюционную историю $$$n$$$ современных видов мы будем представлять в виде двоичного дерева с $$$n$$$ листьями, соответствующими этим $$$n$$$ видам. Каждая внутренняя вершина соответствует устаревшему виду, от которого в некоторый момент произошло, для простоты, два других. Корень дерева — условный «начальный» вид, от которого в итоге происходят все остальные. Листья в дереве имеют номера от $$$1$$$ до $$$n$$$, внутренние вершины имеют номера от $$$n + 1$$$ до $$$2n - 1$$$. Корень имеет номер $$$2n - 1$$$.

Чтобы сравнить две эволюционные теории, используют разные метрики; одна из них — расстояние по тройкам. Рассмотрим произвольные три различных вида (листа в дереве). Пойдем от этих видов вверх и найдем те два вида, в которых произошло разбиение, приведшее к тому, что существуют три современных вида. Для трех видов $$$A$$$, $$$B$$$ и $$$C$$$ есть, по сути, три способа развития (изображены на картинке): от общего предка в некоторый момент отделился вид, из которого в итоге произошли $$$A$$$ и $$$B$$$, а также еще один вид, из которого позже произошел $$$C$$$. Аналогично, есть два других варианта с другими разбиениями. Будем говорить, что история эволюции тройки $$$(A, B, C)$$$ отличается в двух эволюционных деревьях, если структура того, как они произошли, отличается в первой и второй теории. Ниже изображены три способа, как могут выглядеть истории эволюции трех видов, каждое ребро на картинке также может состоять из цепочки промежуточных видов.

Найдите число троек современных видов, структура развития которых различается в двух заданных теориях.

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

В первой строке содержится число $$$n$$$ ($$$3 \le n \le 50\,000$$$) — число современных видов (также листьев в дереве). Далее идут две строки, описывающие первое и второе дерево соответственно.

Каждое дерево описано массивом родителей из $$$2n - 2$$$ чисел: для каждой вершины $$$i$$$ от $$$1$$$ до $$$2n - 2$$$ указан номер ее родителя $$$\t{parent[}i\t{]} \gt i$$$. Вершина с номером $$$2n - 1$$$ является корнем дерева. Гарантируется, что вершины с номерами от $$$1$$$ до $$$n$$$ являются листьями дерева и не встречаются как значения в массиве parent. Также гарантируется, что дерево двоичное: каждая внутренняя вершина имеет номер от $$$n + 1$$$ до $$$2n - 1$$$ и имеет два ребенка (то есть, каждое значение встречается дважды в массиве parent).

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

Выведите одно число — число троек видов, эволюционные истории которых отличаются в двух деревьях.

Система оценки
ПодзадачаБаллыОграничения
125$$$n \le 50$$$
210$$$n \le 200$$$
320$$$n \le 2000$$$
445Без дополнительных ограничений
Примеры
Входные данные
5
6 9 7 6 7 8 8 9
6 9 7 7 6 8 8 9
Выходные данные
4
Входные данные
5
8 7 7 6 6 8 9 9
7 8 6 9 6 7 8 9
Выходные данные
8
Примечание

Ниже изображены эволюционные деревья из первого примера:

Тройки видов, для которых эволюционные истории различаются: $$$(1, 3, 4), (1, 3, 5), (1, 4, 5), (3, 4, 5)$$$.

Второй пример:

В нем восемь отличающихся троек: $$$(1, 2, 3), (1, 2, 4), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 5), (2, 4, 5), (3, 4, 5)$$$.