Когнитивные технологии 2023-2024. Второй отбор
Statement is not available in English language
A. Вердикты системы All Cups
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В этой задаче речь пойдет про одного из участников первого отбора олимпиады «Когнитивные технологии» 2023-2024 года. Для анонимности будем звать этого участника именем Ратибор.

Так вот, Ратибор узнал, что в системе All Cups, на которой проходит олимпиада, есть шесть основных вердиктов, которые можно получить за посылку по задаче: OK, WA, PE, RE, ML и TL. Есть еще несколько вспомогательных вердиктов, но они не заинтересовали Ратибора.

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

Помогите Ратибору определить, каких вердиктов ему не хватает для коллекции.

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

В первой строке дано целое число $$$n$$$ ($$$1 \le n \le 5$$$) — количество различных вердиктов, которые Ратибор получил в системе All Cups на первом отборе.

В следующих $$$n$$$ строках даны вердикты, которые получил Ратибор, по одному в строке.

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

Выведите все вердикты, которых не хватает Ратибору для полной коллекции, по одному в строке. Вердикты можно выводить в любом порядке.

Пример
Входные данные
3
OK
WA
PE
Выходные данные
RE
ML
TL

Statement is not available in English language
B. N-факториал
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

$$$N$$$-факториалом называется число вида $$$1\cdot 2^2 \cdot 3^3 \cdot \ldots \cdot N^N$$$. Другими словами, это произведение всех чисел от $$$1$$$ до $$$N$$$, где каждый множитель возведен в степень, равную самому себе. Будем считать, что $$$N$$$-факториал определен для $$$N \ge 0$$$, а $$$0$$$-факториал равен $$$1$$$.

Вам дано целое положительное число $$$x$$$. Определите, является ли оно суммой двуx $$$N$$$-факториалов?

Например, если $$$x = 112$$$, то оно является суммой $$$3$$$-факториала и $$$2$$$-факториала, так как $$$112 = 108 + 4$$$, и при этом $$$108 = 1^1 \cdot 2^2 \cdot 3^3$$$, а $$$4 = 1^1 \cdot 2^2$$$

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

Первая строка входных данных содержит единственное целое число $$$x$$$ ($$$1 \le x \le 10^9$$$) — число, для которого необходимо сказать, является ли оно суммой двух $$$N$$$-факториалов.

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

Выведите:

  • «YES», если число $$$x$$$ является суммой двух $$$N$$$-факториалов;
  • «NO» в противном случае.

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

Примеры
Входные данные
112
Выходные данные
YES
Входные данные
25
Выходные данные
NO
Входные данные
8
Выходные данные
YES
Входные данные
86400108
Выходные данные
YES
Примечание

Первый тест разобран в условии задачи.

В третьем тесте число является суммой двуx $$$2$$$-факториалов.

Statement is not available in English language
C. Граница
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В стране Берляндии есть $$$n$$$ городов и $$$m$$$ двунаправленных дорог между ними. Все города пронумерованы от $$$1$$$ до $$$n$$$, и из любого города страны возможно добраться до любого другого. Между любой парой городов есть не более одной дороги, при этом каждая дорога имеет целую положительную длину.

Внутри страны находятся $$$2$$$ княжества, которые хотят разделить территорию между собой. Столица первого княжества находится в городе с номером $$$a$$$, а столица второго — в городе с номером $$$b$$$.

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

Определите, можно ли разделить территорию так, чтобы одновременно выполнялись $$$4$$$ следующих условия:

  • если кратчайшее расстояние от некоторого города $$$x$$$ до $$$a$$$ и $$$b$$$ одинаково, то он находится на границе и не принадлежит никакому из княжеств;
  • если кратчайшее расстояние от некоторого города $$$x$$$ до $$$а$$$ меньше, чем до $$$b$$$, он принадлежит $$$1$$$-му княжеству;
  • если первые $$$2$$$ условия не верны, город $$$x$$$ принадлежит $$$2$$$-му княжеству;
  • нельзя пройти из одного княжества в другое, не пересекая граничный город;

Например, пусть $$$n = 7$$$, $$$m = 9$$$, столица первого княжества находится в городе $$$2$$$, а второго — в городе $$$3$$$. Карта Берляндии выглядит как на рисунке ниже:

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

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

Первая строка входных данных содержит два целых числа $$$n$$$, $$$m$$$ ($$$3 \le n \le 500$$$, $$$n - 1 \le m \le \frac{n \cdot (n - 1)}{2}$$$) — количество городов в Берляндии и количество дорог между ними.

В следующих $$$m$$$ строках находится по три целых положительных числа $$$u$$$, $$$v$$$, $$$c$$$ ($$$1 \le u, v \le n$$$, $$$u \neq v$$$, $$$1 \le c \le 10^5$$$) — пара городов, соединенных дорогой и длина этой дороги.

В последней строке входных данных находятся два целых числа $$$a$$$, $$$b$$$ ($$$1 \le a, b \le n$$$, $$$a \neq b$$$) — города, в которых находятся столицы первого и второго княжества.

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

Если разделить города между княжествами так, чтобы выполнялись все условия, невозможно, выведите число $$$-1$$$;

Иначе на одной строке выведите ровно $$$n$$$ чисел, где $$$i$$$-е число ($$$1 \le i \le n$$$) будет равно:

  • $$$1$$$, если город с номером $$$i$$$ будет принадлежать $$$1$$$-му княжеству;
  • $$$2$$$, если город с номером $$$i$$$ будет принадлежать $$$2$$$-му княжеству;
  • $$$0$$$, если город с номером $$$i$$$ будет находиться на границе.
Примеры
Входные данные
7 9
1 7 2
1 3 3
1 5 4
1 2 3
4 2 2
6 2 5
3 7 1
3 5 6
3 4 2
2 3
Выходные данные
0 1 2 0 2 1 2 
Входные данные
3 3
1 2 1
1 3 1
2 3 2
1 3
Выходные данные
-1
Входные данные
5 4
2 4 1
2 1 1
5 3 3
4 3 1
1 4
Выходные данные
1 0 2 2 2 
Примечание

Первый тест разобран в условии задачи.

Во втором тесте нельзя построить границу между княжествами, так как нет непустого множества городов, имеющих одинаковые расстояния до $$$a$$$ и $$$b$$$.

Statement is not available in English language
D. Поход и озеро
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Мальчик Гена решил на выходных устроить поход. Дом Гены расположен в поле. Рядом с домом находится круглое озеро. Радиус окружности озера равен $$$r$$$. Расстояние от центра озера до дома Гены равно $$$b$$$, где $$$b \gt r$$$. Через поле проходит дорога на расстоянии $$$a$$$ от центра озера, где $$$a \gt r$$$. Если через центр озера и дом Гены провести прямую, то окажется, что она параллельна дороге. Схема расположения объектов изображена на рисунке 1.

Карта местности

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

Найдите длину маршрута Гены.

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

Пример некорректного маршрута

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

Пример корректного маршрута
Входные данные

В первой строке дано одно целое число $$$r$$$ ($$$1 \le r \le 10$$$) — радиус озера.

Во второй строке дано одно целое число $$$b$$$ ($$$r \lt b \le 100$$$) — расстояние от центра озера до дома Гены.

В третьей строке дано одно целое число $$$a$$$ ($$$r \lt a \le 100$$$) — расстояние от центра озера до дороги.

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

В единственной строке выведите одно вещественное число — длину маршрута Гены.

Ответ считается правильным, если его абсолютная или относительная погрешность не превышает $$$10^{-6}$$$.

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

Statement is not available in English language
E. Горилла залезает на дерево
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Однажды горилла нашла дерево на $$$n$$$ вершинах. Корнем этого дерева является вершина $$$1$$$, а на рёбрах этого дерева записаны веса. Любая порядочная горилла захотела бы залезть на такое дерево и эта не стала исключением. Обратите внимание, что в этой задаче корень дерева находится наверху.

Горилла может начать свой путь в любой вершине с номером $$$v$$$ ($$$2 \le v \le n$$$). Изначально её усталость равна $$$1$$$. Когда горилла поднимается по ребру наверх (ближе к корню), её усталость умножается на вес этого ребра.

Горилла имеет выносливость $$$k$$$, поэтому она откажется идти по ребру, после которого её усталость станет строго больше $$$k$$$ и немедленно закончит путешествие. Если такое ребро не встретилось, горилла закончит путешествие в корне.

Назовём продолжительностью путешествия количество рёбер, по которым прошла горилла. Обозначим продолжительность путешествия из вершины $$$v$$$ как $$$d_v$$$.

Помогите горилле узнать числа $$$d_2, d_3, \ldots, d_n$$$. Другими словами, найдите продолжительности путешествия, если горилла будет начинать свой путь из вершины с номером $$$v$$$ ($$$2 \le v \le n$$$).

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

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

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

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

В следующих $$$n - 1$$$ строках каждого набора даны целые числа $$$v, u, w$$$ ($$$1 \le v, u \le n$$$, $$$1 \le w \le k$$$) — концы соответствующего ребра в дереве и вес этого ребра.

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

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

Для каждого набора входных данных выведите $$$n - 1$$$ целое число $$$d_2, d_3, \ldots, d_n$$$.

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

Дерево в первом наборе входных данных первого теста выглядит так:

Statement is not available in English language
F. Название команды
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Во Всеберляндской олимпиаде по программированию могут участвовать команды в составе $$$n$$$ человек. Для участия каждой команде нужно выбрать название.

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

  • выбрать префикс строки $$$t$$$ минимальной длины, который включал бы все их имена без пересечений.

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

Некоторое множество подстрок входит в строку без пересечений, если никакой символ не принадлежит двум подстрокам одновременно. Например, подстроки «a» и «bc» входят в строку «ababc» без пересечений, а подстроки «aba» и «abc» — нет.

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

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

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

Вторая строка входных данных содержит строку $$$t$$$, состоящую из строчных латинских букв — название, составленное командой.

Далее следуют $$$n$$$ строк, каждая из которых содержит строку $$$s_i$$$, состоящую из строчных латинских букв ($$$1 \le |s_i| \lt m$$$) — имя $$$i$$$-го участника команды ($$$1 \le i \le n$$$). Длина строки $$$s_i$$$ обозначается как $$$|s_i|$$$.

Гарантируется, что сумма значений $$$|s_i|$$$ не превосходит значения $$$m$$$, и в строку $$$t$$$ можно поместить имена всех участников без пересечений.

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

Выведите:

  • Число -1, если название команды невозможно сократить;
  • Иначе длину минимального префикса строки $$$t$$$, в который могут войти имена всех участников без пересечений.
Примеры
Входные данные
4 22
omihaakrisssashaannaaa
kris
miha
sasha
anna
Выходные данные
20
Входные данные
2 16
coolnickgoodalex
nick
alex
Выходные данные
-1
Входные данные
3 7
bababab
a
bab
b
Выходные данные
5