Когнитивные технологии 2025-2026. Первый отбор
A. Починка двигателя «Пегаса»
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

По пути на Планету Двух Капитанов звездолёт профессора Селезнёва «Пегас» столкнулся с метеоритом. Двигатель звездолёта получил повреждения и нуждается в ремонте. Современные двигатели работают на двух массивах целых чисел $$$a_1, a_2, \ldots, a_n$$$ и $$$b_1, b_2, \ldots, b_n$$$. Метеорит не затронул массив $$$a_1, a_2, \ldots, a_n$$$, но уничтожил массив $$$b_1, b_2, \ldots, b_n$$$.

Капитан Зелёный хочет вставить новый массив $$$b_1, b_2, \ldots, b_n$$$, но если среди чисел $$$|b_i - a_i|$$$ ($$$1 \le i \le n$$$) будет хотя бы одно чётное, двигатель «Пегаса» не заведётся.

Помогите капитану выбрать подходящий массив $$$b_1, b_2, \ldots, b_n$$$ ($$$0 \le b_i \le 10^9$$$), чтобы двигатель завёлся и команда смогла продолжить экспедицию.

Можно показать, что подходящий массив всегда существует.

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

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

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

Во второй строке каждого набора вводится $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i \le 10^9$$$) — уцелевший массив.

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

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

Для каждого набора входных данных выведите $$$n$$$ целых чисел — подходящий массив $$$b_1, b_2, \ldots, b_n$$$ ($$$0 \le b_i \le 10^9$$$).

Если подходящих массивов несколько, вы можете вывести любой.

Пример
Входные данные
4
5
1 2 3 4 5
4
1 1 1 1
6
0 0 1 1 2 3
2
52 67
Выходные данные
4 9 16 25 36
2 4 8 16
11 121 242 242 1331 2662
1 0

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

Полезных ископаемых нет. Воды нет. Растительности нет. Населена роботами.

День на планете Шелезяка длится $$$n$$$ часов. Каждый робот, обитающий на этой планете, очень трудолюбивый. За день он по порядку перетаскивает $$$n$$$ ящиков массой $$$a_1, a_2, \ldots, a_n$$$, по ящику в час. Затем наступает следующий день, и он снова перетаскивает ящики массой $$$a_1, a_2, \ldots, a_n$$$. Ровно один раз в день между перетаскиваниями ящиков робот получает порцию смазки.

Механизмы роботов очень чувствительны, поэтому каждый перетащенный ящик наносит роботу урон. Ящик с номером $$$i$$$ моментально нанесёт $$$a_i$$$ урона за каждый час, начиная с $$$i$$$ до следующего получения смазки. Обратите внимание, что смазка может быть получена на следующий день.

Например, если $$$n = 8$$$, а мы выдали роботам смазку после перетаскивания $$$5$$$-го ящика:

  • Ящик $$$a_5$$$ нанесёт урон один раз (всего $$$a_5$$$ урона);
  • Ящик $$$a_6$$$ нанесёт урон восемь раз (всего $$$a_6 \cdot 8$$$ урона);
  • Ящик $$$a_2$$$ нанесёт урон четыре раза (всего $$$a_2 \cdot 4$$$ урона).

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

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

В первой строке вводится целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.

Далее следует описание наборов.

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

Во второй строке каждого набора вводится $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le 10^7$$$) — массы ящиков.

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

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

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

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

Разберём первый набор входных данных:

Если выдать смазку перед первым ящиком, $$$a_1$$$ урона нанесётся пять раз, $$$a_2$$$ урона нанесётся четыре раза и т.д., то есть суммарный урон будет равен: $$$5 \cdot a_1 + 4 \cdot a_2 + 3 \cdot a_3 + 2 \cdot a_4 + 1 \cdot a_5 = 15 + 32 + 3 + 14 + 4 = 68$$$.

Если выдать смазку после первого ящика, суммарный урон будет равен: $$$1 \cdot a_1 + 5 \cdot a_2 + 4\cdot a_3 + 3 \cdot a_4 + 2\cdot a_5 = 3 + 40 + 4 + 21 + 8 = 76$$$.

Если выдать смазку после второго ящика, суммарный урон будет равен: $$$6 + 8 + 5 + 28 + 12 = 59$$$.

После третьего ящика: $$$9 + 16 + 1 + 35 + 16 = 77$$$.

После четвёртого ящика: $$$12 + 24 + 2 + 7 + 20 = 65$$$.

Выдача смазки после пятого ящика эквивалентна выдаче смазки перед первым ящиком.

Таким образом, минимальный урон равен $$$59$$$.

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

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

Птица Говорун отличается умом и сообразительностью, умом и сообразительностью.

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

Игра ведётся на доске $$$n \times n$$$. Сначала Говорун тайно расставляет $$$n$$$ ладей, чтобы они не били друг друга, запоминает их позиции и убирает с доски. Затем Алиса расставляет $$$n$$$ ладей, чтобы они не били друг друга.

Алиса хочет, чтобы количество её ладей, совпавших с ладьями Говоруна по позиции, было чётным. Если девочка не справляется, Говорун сообщает ей позиции угаданных ладей и даёт вторую попытку.

Помогите Алисе выиграть своего умного друга.

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

Первая строка входных данных содержит одно целое число $$$t$$$ ($$$1 \leq t \leq 10^4$$$) — количество наборов входных данных.

В каждом наборе содержится единственное целое число $$$n$$$ ($$$2 \leq n \leq 10^5$$$) — размер доски.

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

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

Вы можете выполнить не более двух ходов.

Чтобы сделать ход, выведите $$$n$$$ целых чисел $$$x_1, x_2, \ldots, x_n$$$ ($$$1 \le x_i \le n$$$) — вертикали ладей, которые выставляет Алиса.

После каждого хода вы должны считать строку, содержащую вердикт.

Существуют три вердикта:

  • «WIN» — вы выиграли, ваша программа должна перейти к обработке следующего набора входных данных;
  • «LOSE» — вы проиграли, ваша программа должна немедленно завершиться;
  • «AGAIN» — вы не выиграли первым ходом, но у вас остался ещё один. Во второй строке дано целое число $$$k$$$ ($$$1 \le k \le n$$$) — количество угаданных ладей Говоруна. В третьей строке даны $$$k$$$ целых чисел — вертикали, на которых вы угадали ладей Говоруна.

Не забывайте сбрасывать буфер после каждого вывода. Для этого можете использовать std::endl в C++ или стандартную функцию print в Python. Не используйте ios_base::sync_with_stdio(false) в C++.

Обратите внимание, что из-за особенностей тестирующей системы вы можете получить вердикт «Ошибка во времени исполнения» вместо вердикта «Неправильный ответ».

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

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

Профессор Селезнёв впервые встретился с удивительным зверем тигрокрысом. На лекциях в престижной академии СУНЦ учат, что у этого существа должно быть три хвоста с длинами $$$a$$$, $$$b$$$, $$$c$$$ ($$$a \lt b \lt c$$$). Профессор замерил длины $$$a$$$ и $$$c$$$, но вот незадача, средний хвост длины $$$b$$$ куда-то пропал.

Профессор захотел выяснить длину утраченного хвоста, но продавец тигрокрыса покачал головой и вспомнил только лишь число $$$m = \text{rad}(a \cdot b \cdot c)$$$. Напомним, что $$$\text{rad}(n)$$$ это произведение всех различных простых делителей числа $$$n$$$. Например, $$$\text{rad}(504)$$$ = $$$\text{rad}(2^3 \cdot 3^2 \cdot 7) = 2 \cdot 3 \cdot 7 = 42$$$. А также по определению $$$\text{rad}(1) = 1$$$.

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

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

Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.

В единственной строке каждого набора даны три целых числа $$$m$$$, $$$a$$$, $$$c$$$ ($$$1 \le m \le 10^{18}$$$, $$$1 \le a \lt c \le 10^6$$$) — значение $$$\text{rad}(a \cdot b \cdot c)$$$, длина самого короткого хвоста и длина самого длинного хвоста.

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

Для каждого набора входных данных выведите два числа — минимальное и максимальное подходящее $$$b$$$. Если вас обманули и подходящих $$$b$$$ не существует, выведите $$$-1$$$ $$$-1$$$.

Пример
Входные данные
6
210 5 21
35 5 7
121 11 13
870870 14 2145
20 1 5
12 2 6
Выходные данные
6 20
-1 -1
-1 -1
29 2088
-1 -1
-1 -1
Примечание

В первом наборе имеем $$$\text{rad}(a \cdot b \cdot c) = 210 = 2 \cdot 3 \cdot 5 \cdot 7$$$. Минимальное подходящее $$$b = 6$$$: $$$\text{rad}(5 \cdot 6 \cdot 21) = \text{rad}(2 \cdot 3^2 \cdot 5 \cdot 7) = 210$$$. Максимальное подходящее $$$b = 20$$$: $$$\text{rad}(5 \cdot 20 \cdot 21)$$$ = $$$\text{rad}(2^2 \cdot 3 \cdot 5^2 \cdot 7) = 210$$$.

E. Генетический анализатор
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
1024 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

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

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

Геном каждого вируса представлен в виде строки, состоящей из строчных латинских букв. Для создания нового супер-вируса У планирует взять два различных вируса с геномами $$$s_1$$$ и $$$s_2$$$ и использовать специальную функцию совместимости:

$$$ L(s_1, s_2) = \text{lcp}(s_1, \text{reverse}(s_2)) + \text{lcp}(\text{reverse}(s_1), s_2) $$$

где $$$\text{lcp}(x, y)$$$ — длина наибольшего общего префикса строк $$$x$$$ и $$$y$$$, а $$$\text{reverse}(s)$$$ — строка $$$s$$$, записанная в обратном порядке.

Крыс Глот куда-то пропал, и поэтому задача о поиске наилучшей комбинации вирусов легла на вас. Найдите пару с наибольшей совместимостью, а то сами знаете, что будет иначе.

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

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

Первая строка содержит целое число $$$n$$$ ($$$2 \leq n \leq 10^5$$$) — количество вирусов.

Следующие $$$n$$$ строк содержат геномы вирусов — непустые строки, состоящие из строчных латинских букв. Гарантируется, что все геномы различны.

Суммарная длина всех геномов по всем наборам входных данных не превосходит $$$10^6$$$.

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

Для каждого набора входных данных в первой строке выведите максимальную найденную совместимость. В следующей строке выведите два различных целых числа $$$a$$$, $$$b$$$, такие что $$$L(s_a, s_b)$$$ — максимально. Если подходящих пар несколько, можно вывести любую.

Пример
Входные данные
4
4
aabc
abca
cbdd
cdaa
2
a
b
5
abcdc
acb
cbaca
cddc
cac
2
cb
b
Выходные данные
3
1 4
0
1 2
2
3 2
1
2 1