Лана и Алан — близнецы, которые учатся в одной школе. Однажды им дали задание составить слово из заданных букв. Поскольку ребята не хотят быть заподозренными в списывании, они хотят сделать так, чтобы их слова отличались в каждой позиции.
Задан набор букв $$$A$$$, состоящий из маленьких букв английского алфавита. Найдите два слова, $$$B$$$ и $$$C$$$, использующие все эти буквы (то есть, являющиеся анаграммами $$$A$$$), что $$$B$$$ и $$$C$$$ содержат разные буквы в каждой позиции. Составленные слова не обязаны быть реальными словами какого-либо языка.
В единственной строке содержится строка $$$A$$$ из маленьких букв английского алфавита. Длина $$$A$$$ находится в пределах от $$$1$$$ до $$$1000$$$.
Если ответ существует, выведите две строки, $$$B$$$ и $$$C$$$, каждая из которых является анаграммой $$$A$$$ (содержит все те же буквы, в том же количестве, как и $$$A$$$, возможно, в другом порядке). Для любой позиции $$$i$$$ от $$$1$$$ до длины $$$A$$$, $$$B_i$$$ должно быть не равно $$$C_i$$$.
Если же такие слова $$$B$$$ и $$$C$$$ составить невозможно, выведите «IMPOSSIBLE». Если существует несколько корректных пар слов, можно вывести любую.
| Подзадача | Баллы | Ограничения |
| 1 | 30 | В $$$A$$$ все буквы различны |
| 2 | 30 | Длина $$$A$$$ не превосходит $$$10$$$ |
| 3 | 40 | Без дополнительных ограничений |
nala
alan lana
abacaba
IMPOSSIBLE
innopolisopen
noepsilonnopi opinionnpoles
Популярная компания 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$$$.
| Подзадача | Баллы | Ограничения |
| 1 | 12 | $$$n \le 3$$$ |
| 2 | 8 | $$$n \le 18$$$ |
| 3 | 9 | $$$L = 1$$$ |
| 4 | 17 | $$$L \le 3$$$ |
| 5 | 26 | $$$n \le 200, 1 \le L \le 8$$$ |
| 6 | 28 | Без дополнительных ограничений |
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$$$.
Андрею на день рождения подарили новый крутой замок. На него можно установить одновременно несколько паролей, при вводе любого из них замок открывается.
Замок состоит из последовательности ячеек, на каждой из которых написано целое число. Ячейки можно менять местами, при правильной перестановке замок открывается. Замок откроется при следующем условии: для любой пары соседних ячеек сумма чисел на них не делится на $$$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
Рассмотрим бесконечную последовательность чисел $$$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$$$.
| Подзадача | Баллы | Ограничения |
| 1 | 12 | $$$l_i = r_i$$$; $$$r_i \le 1000$$$ |
| 2 | 7 | $$$l_i = r_i$$$; $$$r_i \le 10^6$$$ |
| 3 | 8 | $$$r_i \le 10^6$$$ |
| 4 | 30 | $$$r_i \le 10^{10}$$$ |
| 5 | 43 | Без дополнительных ограничений |
5 1 1 2 2 3 4 56 56 5 13
1 2 5 14 42
Сравнивать теории и проверять гипотезы — важная часть научного процесса. Одним из главных вопросов эволюционной биологии является изучение того, как развивалсь и создавались новые виды, в какие моменты произошла развилка и от одного вида пошло несколько разных ветвей развития. В этой задаче вам предстоит оценить, насколько отличаются два эволюционных дерева.
В данной задаче эволюционную историю $$$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).
Выведите одно число — число троек видов, эволюционные истории которых отличаются в двух деревьях.
| Подзадача | Баллы | Ограничения |
| 1 | 25 | $$$n \le 50$$$ |
| 2 | 10 | $$$n \le 200$$$ |
| 3 | 20 | $$$n \le 2000$$$ |
| 4 | 45 | Без дополнительных ограничений |
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)$$$.