Когнитивные технологии 2024-2025. Второй отбор
Statement is not available in English language
A. Посчитай решённые задачи
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Обычно на вкладке «Положение участников» расположена таблица, в которой для каждого из участников напротив его позиции в рейтинге отображаются решённые им задачи.

Однако на сайте произошёл сбой, и теперь положение отобразилось как $$$n$$$ строк, каждая из которых состоит из не более чем $$$6$$$ неповторяющихся заглавных английских букв от A до F. Строки отобразились в соответствии с рейтингом участников, то есть количество решённых задач в каждой отобразившейся последующей строке не больше, чем в предыдущей.

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

Например, пусть в олимпиаде было $$$3$$$ участника и они решили следующие задачи:

  1. A, B, E, F
  2. A, B, C
  3. B, C

Тогда всего было решено $$$5$$$ различных задач — A, B, C, E и F.

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

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

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

В первой строке дано одно целое число $$$n$$$ ($$$1 \le n \le 10^5$$$) — количество участников олимпиады.

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

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

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

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

Пример
Входные данные
3
3
ABEF
ABC
BC
5
A
A
A
A
A
2
ABCDEF
A
Выходные данные
5
1
6
Примечание

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

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

В Сбере решили создать новую команду, которая будет заниматься передовыми разработками искусственного интеллекта. Чтобы не допустить утечек технологий, было решено набрать команду только из текущих программистов Сбера. Для этого технический директор созвал $$$n$$$ человек для отбора. Все сотрудники расставлены в порядке начала работы в компании, а у каждого из них есть уровень навыка $$$a_i$$$. То есть 1-й сотрудник c навыком $$$a_1$$$ пришёл в компанию раньше 2-го сотрудника с навыком $$$a_2$$$, 2-й сотрудник с навыком $$$a_2$$$ пришёл раньше 3-го сотрудника с навыком $$$a_3$$$ и т.д.

Чтобы команда могла эффективно работать, важно, чтобы каждый сотрудник в ней чувствовал уверенность в поддержке коллег. Для этого было решено, что в любой группе сотрудников, выбранной для команды, у каждого участника должен быть человек, обладающий навыком не меньше, чем у него самого, и присутствующий среди тех, кто пришёл в компанию раньше него. Навык разработчика, пришедшего раньше всех из команды, может быть любым. Иными словами, среди сотрудников нужно найти подпоследовательность, в которой навык первого кандидата произвольный, а для других существует сотрудник со значением не меньше, чем у него среди предыдущих. Например, среди сотрудников с навыками $$$1, 3, 2$$$ можно выбрать в команду второго и третьего ($$$3 \ge 2$$$), но нельзя выбрать первого и третьего ($$$1 \lt 2$$$).

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

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

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

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

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

Во второй строке даны $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_{n}$$$ ($$$1 \le a_i \le n$$$) — навыки кандидатов. Все кандидаты пронумерованы в порядке строгого убывания длительности работы в Сбере.

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

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

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

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

В первом примере возможно собрать команду из 1-го, 2-го, 3-го и 7-го разработчика. Тогда для каждого кандидата, кроме первого, будет сотрудник, который имеет навык больше или равный, чем у него и при этом будет опытнее.

Второй пример разобран в условии.

В третьем примере подходящая команда будет из 1-го, 2-го, 3-го, 5-го и 6-го разработчика.

Statement is not available in English language
C. Хороший, плохой, строка
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Артур Морган и Датч ван дер Линде решили отдохнуть после удачного ограбления, поэтому направились в салун в Валентайне. В салуне они нашли строку $$$s$$$, состоящую из маленьких букв латинского алфавита. В строке $$$s$$$ используются только восемь первых букв латинского алфавита («a», «b», «c», «d», «e», «f», «g», «h»). Длину строки $$$s$$$ обозначим как $$$|s|$$$.

Артур и Датч решили поиграть со строкой $$$s$$$ и поместили указатель $$$i$$$ на её первый символ (индексация с единицы). Игроки будут ходить по очереди, первым ходит Артур. В свой ход игрок забирает букву $$$s_i$$$ себе в пул, после чего сдвигает указатель $$$i$$$. Можно сдвинуть указатель $$$i$$$ на один вправо, при этом, если указатель стал больше $$$|s|$$$, игра немедленно заканчивается. Вместо этого, если $$$2 \cdot i \le |s|$$$, можно переместить указатель на позицию $$$2 \cdot i$$$ (если $$$2 \cdot i \gt |s|$$$, такой ход делать нельзя). Можно показать, что при таких условиях игра всегда закончится.

В конце игры Артур и Датч считают Побитовое исключающее ИЛИ букв в своих пулах. Букве «a» соответствует число $$$0$$$, букве «b» — число $$$1$$$, и т.д., букве «h» — число $$$7$$$. Например, Побитовое исключающее ИЛИ букв «a», «c», «h» равно $$$0 \oplus 2 \oplus 7 = 5$$$. Игрок, у которого значение Побитового исключающего ИЛИ больше, побеждает, при равенстве объявляется ничья.

Кто победит в игре, если Артур и Датч играют оптимально?

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

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

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

Каждый набор входных данных содержит строку $$$s$$$ ($$$1 \le |s| \le 2 \cdot 10^5$$$) — игровое поле.

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

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

Для каждого набора входных данных выведите результат игры:

  • Arthur — если победит Артур;
  • Dutch — если победит Датч;
  • Draw — если игра закончится вничью.
Пример
Входные данные
5
hahahahhha
abacaba
abcba
dagahah
cd
Выходные данные
Dutch
Draw
Draw
Arthur
Dutch

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

Я не думаю, что возможно спасти всех. Я просто хочу спасти как можно больше.

Эмия Кирицугу должен нарисовать неориентированный граф на $$$n$$$ вершинах. Рёбер можно проводить сколько угодно, но между каждой парой вершин должно быть не более одного ребра, кроме того нельзя проводить ребро из вершины в себя же. Получившийся граф не обязан быть связным.

Назовём граф легендарным, если в нём окажется ровно $$$k$$$ хороших пар вершин $$$\langle v, u \rangle$$$ ($$$1 \le v \lt u \le n$$$). Пара вершин называется хорошей, если между вершинами существуют ровно два простых пути, при этом они не пересекаются по рёбрам. Путь называется простым, если каждая вершина встречается в нём не более одного раза.

Вам нужно ответить на $$$q$$$ запросов. Каждый запрос задаёт числа $$$n$$$, $$$k$$$. Определите для каждого, получится ли у Эмии нарисовать легендарный граф.

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

В первой строке единственное число $$$q$$$ ($$$1 \leq q \leq 10^5$$$) — количество запросов.

В последующих $$$q$$$ строках по два целых числа $$$n$$$ ($$$0 \leq n \leq 10^9$$$) и $$$k$$$ ($$$0 \leq k \leq 10^5$$$) — количество вершин в графе и количество хороших пар вершин.

Обратите внимание, что ограничение на сумму $$$k$$$ по всем запросам отсутствует. Также обратите внимание, что запросы независимы.

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

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

Пример
Входные данные
6
0 1
1 0
6 6
0 0
1 1
1000000000 100000
Выходные данные
NO
YES
YES
YES
NO
YES
Примечание

В третьем запросе $$$6$$$ вершин, Эмия должен получить $$$6$$$ хороших пар. Это можно достичь так:

Третий запрос.

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

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

Недавно она нашла на даче у своей бабушки растущее взвешенное дерево из $$$n$$$ вершин, у которого каждая вершина $$$i$$$ ($$$1 \le i \le n$$$) имеет вес $$$c_i$$$. Рядом с деревом лежала книга, где написано: «Напомним, что деревом называется граф без циклов, где между любыми двумя вершинами существует путь».

Мадока решила снять веселую нарезку взвешенного дерева и выложить её на набирающей популярность площадке «ТеремокТВ», где любое видео может легко набрать несколько десятков просмотров. Она хочет разбить бабушкино дерево на некоторое количество непересекающихся путей. Другими словами, каждая вершина должна принадлежать ровно одному простому пути.

Красотой простого пути $$$v_1, v_2, \ldots, v_k$$$ она считает значение $$$(c_{v_1} | c_{v_2} | \ldots | c_{v_k})^2$$$ (квадрат побитового ИЛИ весов вершин). Красотой разбиения будем считать сумму красот путей, на которые дерево распалось.

Помогите Мадоке стать популярной и набрать сотню просмотров. Найдите минимальную (у Мадоки очень странное понимание красоты) красоту дерева по всем его веселым нарезкам.

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

В первой строке задано единственное число $$$t$$$ ($$$1 \leq t \leq 100$$$) — количество наборов входных данных. Затем следует их описание.

В первой строке каждого набора входных данных задано единственное число $$$n$$$ ($$$2 \leq n \leq 500$$$) — количество вершин в дереве.

Во второй строке каждого набора входных данных заданы числа $$$c_1, c_2, \ldots, c_n$$$ ($$$1 \leq c_i \leq 10^7$$$) — веса вершин дерева.

В следующих $$$n - 1$$$ строках идёт описание рёбер графа.

Каждое ребро задано в отдельной строке числами $$$u, v$$$ ($$$1 \leq u, v \leq n$$$) — означающее ребро между вершинами $$$u, v$$$.

Гарантируется, что каждый тест задает корректное дерево, и что сумма $$$n$$$ по всем наборам входных не превосходит $$$500$$$.

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

Для каждого набора входных данных выведите ровно одно число — ответ на задачу.

Пример
Входные данные
2
6
7 5 4 1 21 10
1 2
1 3
2 4
5 3
6 5
5
71 56 63 59 97
3 4
3 2
5 4
4 1
Выходные данные
590
18419
Примечание

В первом наборе входных данных оптимальное разбиение выглядит так:

Красота такого разбиения: $$$10^2 + (21|4)^2 + (7|5|1)^2 = 590$$$. Можно показать, что красоту меньше получить нельзя.

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

Ксюша поступила в престижный университет на Кипре. Программа первого семестра по алгебре содержала только лишь темы «Умножение целых чисел» и «Деление целых чисел». Ксюша училась в лучшей школе страны и уже проходила эти темы, поэтому она решила прогуливать лекции и семинары по алгебре.

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

Дан массив из $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$. Необходимо ответить на $$$m$$$ запросов. Запросы бывают трёх типов:

  1. посчитать $$$a_l \cdot a_{l+1} \cdot \ldots \cdot a_r$$$ по модулю $$$10^9 + 7$$$;
  2. поделить каждое из чисел $$$a_l, a_{l+1}, \ldots, a_r$$$ на его минимальный нечётный делитель, больший $$$1$$$; если такого нет, число не меняется;
  3. присвоить $$$a_i = x$$$.

Ксюша не хочет отчисляться и уезжать с Кипра, помогите ей сдать экзамен.

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

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

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

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

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

В третьей строке дано целое число $$$m$$$ ($$$1 \le m \le 2 \cdot 10^5$$$) — количество запросов.

В следующих $$$m$$$ строках даны запросы:

  • ? $$$l$$$ $$$r$$$ ($$$1 \le l \le r \le n$$$) — запрос произведения по модулю $$$10^9 + 7$$$ на отрезке;
  • / $$$l$$$ $$$r$$$ ($$$1 \le l \le r \le n$$$) — запрос массового деления на отрезке;
  • = $$$i$$$ $$$x$$$ ($$$1 \le i \le n$$$, $$$1 \le x \le 5 \cdot 10^5$$$) — запрос изменения элемента.

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

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

Для каждого набора входных данных выведите ответы на запросы типа «?» в отдельных строках.

Пример
Входные данные
2
4
15 62 41 16
8
? 1 4
/ 1 4
? 1 4
/ 1 4
? 1 4
/ 1 4
= 2 228
? 1 4
6
1 500000 100500 1234 777 101
7
= 3 303
? 2 4
/ 1 3
? 1 5
/ 2 6
= 5 13
? 4 6
Выходные данные
610080
160
32
3648
950998698
61732212
26
Примечание

В первом наборе входных данных после применения первой операции деления массив трансформируется так:

$$$15, 62, 41, 16 \to \frac{15}{3}, \frac{62}{31}, \frac{41}{41}, 16 = 5, 2, 1, 16$$$