Innopolis Open 2024. Заключительный этап
A. Episodes
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кот Miston поставил на скачивание сериал «Котокоп» («Police Cat»). В сериале $$$n$$$ серий, $$$i$$$-я из которых сейчас скачивается со скоростью $$$v_i$$$, и браузер показывает, что $$$i$$$-я серия скачается ровно через $$$t_i$$$ минут, что не совсем верно.

Браузер рассчитывает время, исходя из предположения, что скорость скачивания $$$i$$$-й серии не изменится. Однако когда какая-то серия оказывается полностью скачанной, скорость скачивания других серий увеличивается (других причин для изменения скорости скачивания той или иной серии и правда нет). При этом соотношения скоростей скачивания еще не скачанных серий неизменны. Иными словами, если $$$v_i^t$$$ — скорость скачивания $$$i$$$-й серии в момент времени $$$t$$$, то для любых $$$i$$$ и $$$j$$$ верно, что при всех $$$t$$$, меньших момента окончания скачивания $$$i$$$-й или $$$j$$$-й серии, величина $$$\frac{v_i^t}{v_j^t}$$$ одинакова.

Никакой другой нагрузки на сеть, кроме скачивания $$$n$$$ серий, нет. То есть суммарная скорость скачивания $$$\sum\limits_{i=1}^n v_i^t$$$ постоянна (одинакова при любом $$$t$$$).

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

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

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

Каждая из следующих $$$n$$$ строк содержит два целых числа $$$v_i$$$ и $$$t_i$$$ — текущая скорость скачивания и предполагаемое браузером время скачивания $$$i$$$-й серии ($$$1 \le v_i, t_i \le 10^{18}$$$; $$$\sum\limits_{i=1}^n v_i \le 10^{18}$$$).

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

Для каждой серии выведите настоящее время ее скачивания.

Ваш ответ будет засчитан, если его абсолютная или относительная ошибка не превосходит $$$10^{-6}$$$. Формально, пусть ваш ответ равен $$$a$$$, а ответ жюри равен $$$b$$$. Ваш ответ будет засчитан, если $$$\frac {|a - b|}{\max(1, b)} \le 10^{-6}$$$.

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

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
0–примеры из условияполная
15$$$n \le 2$$$полная
25$$$n \le 3$$$0, 1первая ошибка
315$$$n, v_i, t_i \le 3000$$$0первая ошибка
420$$$n \le 3000$$$0 – 3первая ошибка
520$$$v_i = v_j$$$ для всех $$$i$$$, $$$j$$$первая ошибка
615$$$n \le 30\,000$$$0 – 4первая ошибка
75$$$t_i \le 10^{9}$$$ для всех $$$i$$$; $$$\sum\limits_{i=1}^n v_i \le 10^{9}$$$0, 3первая ошибка
815без дополнительных ограничений0 – 7первая ошибка
Примеры
Входные данные
2
2 4
3 5
Выходные данные
4
4.6
Входные данные
3
1 4
5 2
2 3
Выходные данные
2.5
2
2.375

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

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

Игра рассчитана ровно на $$$n$$$ игроков, и на фазе распределения ресурсов между игроками по кругу распределяются $$$n$$$ карточек с целыми числами, упорядоченными по неубыванию. Пусть $$$i$$$-му игроку досталось число $$$a_i$$$ (тогда $$$a_i \le a_{i+1}$$$ для всех $$$i \le n - 1$$$). Назовем опциями $$$i$$$-го игрока тройку чисел $$$\{a_{i-1}, a_i, a_{i+1}\}$$$, то есть число, написанное на его карточке, и два числа его соседей. Игроки сидят по кругу, то есть для первого игрока вместо $$$a_{i-1}$$$ будет опция $$$a_n$$$, а для $$$n$$$-го игрока вместо $$$a_{i+1}$$$ будет опция $$$a_1$$$.

Каждый игрок должен выбрать ровно одну из доступных ему опций и получить ровно столько ресурсов из банка. После чего от двух оставшихся опций считается побитовое «И» (операция '&'), и такое количество очков добавляется к результату игроков в этом раунде. Например, если у игрока есть опции $$$\{2, 5, 11\}$$$ и игрок выбирает взять $$$5$$$ ресурсов, он получает $$$2\ \&\ 11 = 0010_2\ \&\ 1011_2 = 2$$$ очка. Для успешного перехода к следующей фазе игры

  1. суммарное количество взятых игроками ресурсов не должно превосходить $$$\left(\sum\limits_{i=1}^n a_i\right) + X$$$, то есть должно не больше чем на $$$X$$$ превышать количество ресурсов в случае, когда каждый игрок выбирает свое $$$a_i$$$;
  2. суммарное количество набранных очков должно быть максимально возможным.

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

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

В первой строке ввода через пробелы даны два целых числа $$$n$$$ и $$$X$$$ — количество игроков и ограничение на «дополнительное» число ресурсов ($$$3 \le n \le 300$$$; $$$0 \le X \le 10^5$$$).

Во второй строке через пробел перечислены $$$n$$$ целых чисел $$$a_i$$$ — значения, написанные на выданных игрокам карточках ($$$0 \le a_i \le 10^5$$$; $$$a_i \le a_{i+1}$$$).

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

Выведите одно целое число — максимальное количество очков, которое могут набрать игроки за эту фазу.

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

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

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
0–примеры из условияполная
113$$$n \le 14$$$0полная
28$$$1 \le a_i \le 2$$$ для всех $$$i$$$первая ошибка
310$$$a_i \le 3$$$ для всех $$$i$$$2первая ошибка
412$$$a_n - a_1 \le 1$$$2первая ошибка
517$$$a_i\ \&\ a_{i+1} = a_i$$$ для всех $$$i$$$первая ошибка
616$$$a_i \le 200$$$ для всех $$$i$$$0, 2, 3первая ошибка
724без дополнительных ограничений0 – 6первая ошибка
Примеры
Входные данные
4 0
1 2 4 8
Выходные данные
0
Входные данные
4 0
3 6 12 24
Выходные данные
22
Входные данные
7 3
1 2 3 4 5 6 7
Выходные данные
26
Примечание

В первом примере $$$a_i\ \&\ a_j = 0$$$ при $$$i \ne j$$$, поэтому набрать очки не получится.

Во втором примере игрокам следует взять ресурсы в количестве $$$24$$$, $$$3$$$, $$$6$$$ и $$$3$$$, соответствено. Тогда количество очков равно $$$(3\ \&\ 6) + (6\ \&\ 12) + (12\ \&\ 24) + (12\ \&\ 24) = 2 + 4 + 8 + 8 = 22$$$.

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

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

Карта области, над которой может перемещаться вертолет, представляет из себя поле, состоящее из $$$n$$$ строк и $$$m$$$ столбцов. Нумерация строк идет от $$$1$$$ до $$$n$$$ сверху-вниз, нумерация столбцов от $$$1$$$ до $$$m$$$ слева-направо. Каждая клетка представляет из себя участок одинаковой высоты. Будем характеризовать клетку в строке $$$i$$$ и столбце $$$j$$$ как $$$(i, j)$$$, а минимальную высоту, на которой может безопасно находиться вертолет на соответствующем участке, как $$$a_{i, j}$$$.

Сервера надо переместить из клетки $$$(1, 1)$$$ в клетку $$$(n, m)$$$. Будем считать, что вертолет уже поднялся в воздух, и находится на высоте $$$a_{1, 1}$$$. При попадании вертолета в клетку $$$(n, m)$$$ на любой разрешенной высоте маршрут считается завершенным.

В любой момент времени высота, на которой находится вертолет, должна быть не меньше минимальной высоты полета для текущей клетки, то есть если обозначить за $$$h$$$ высоту, на которой сейчас находится вертолет в клетке $$$(i, j)$$$, должно выполняться $$$a_{i, j} \le h$$$. При этом из позиции $$$(i, j)$$$ на высоте $$$h$$$ можно:

  • Перелететь в соседнюю по стороне клетку, потратив на такой перелет $$$h$$$ топлива. При этом высота не изменится, а такое перемещение можно сделать только если $$$a$$$ клетки, в которую совершается перелет, не больше $$$h$$$.
  • Увеличить свою высоту на произвольное $$$x \ge 0$$$. На такой подъем тратится $$$x$$$ топлива.
  • Опуститься на любую высоту не меньше $$$a_{i,j}$$$. На это топливо не тратится.

Из-за погодных условий вертолет не всегда может лететь во все стороны. Доступные направления задаются строкой $$$\mathtt{s}$$$. Каждое возможное направление полета задается следующими буквами:

  • 'R' — разрешено движение вправо из клетки $$$(i, j)$$$ в клетку $$$(i, j + 1)$$$.
  • 'L' — разрешено движение влево из клетки $$$(i, j)$$$ в клетку $$$(i, j - 1)$$$.
  • 'U' — разрешено движение вверх из клетки $$$(i, j)$$$ в клетку $$$(i - 1, j)$$$.
  • 'D' — разрешено движение вниз из клетки $$$(i, j)$$$ в клетку $$$(i + 1, j)$$$.

Увеличивать и уменьшать высоту можно всегда. Направления перемещения 'R' и 'D' всегда разрешены. Перемещаться за границу поля, разумеется, нельзя.

Программисты из VK быстро справились определить оптимальный по затратам топлива маршрут для вертолета, даже при таком большом количестве условий на его перемещения. А справитесь ли вы?

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

В первой строке даны два целых числа $$$n$$$ и $$$m$$$ — размеры поля, над которым перемещается вертолет ($$$1 \le n, m \le 1000$$$).

Во второй строке дана строка $$$\mathtt{s}$$$, состоящая из различных символов 'L', 'R', 'U' и 'D' — разрешенные направления полета ($$$2 \le |s| \le 4$$$). Гарантируется, что $$$\text{'\t{R}'}, \text{'\t{D}'} \in \mathtt{s}$$$.

Далее идут $$$n$$$ строк по $$$m$$$ чисел — описание поля, $$$i$$$-я строка содержит числа $$$a_{i,j}$$$ (значения минимальной высоты полета), описывающие $$$i$$$-ю строку поля ($$$0 \le a_{i, j} \le 10^9$$$).

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

Выведите единственное число — минимальное количество топлива, чтобы добраться из положения на высоте $$$a_{1,1}$$$ в клетке $$$(1, 1)$$$ до клетки $$$(n, m)$$$.

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

Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены. Далее за $$$A$$$ обозначено $$$\max\limits_{i,j} a_{i,j}$$$.

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
0–примеры из условияполная
15$$$n, m, A \le 10$$$0полная
25$$$n, m \le 10^3$$$, $$$A \le 1$$$первая ошибка
35$$$n = 1$$$, $$$m \le 10^3$$$первая ошибка
47$$$n, m, A \le 500$$$, $$$\mathtt{s} = \text{«\t{RD}»}$$$первая ошибка
515$$$n, m \le 10^3$$$, $$$\mathtt{s} = \text{«\t{RD}»}$$$4первая ошибка
65$$$n, m \le 10^3$$$, и $$$a_{i - 1, j}, a_{i, j - 1} \le a_{i, j}$$$первая ошибка
715$$$n, m \le 10^3$$$, $$$\mathtt{s} = \text{«\t{LRD}»}$$$5первая ошибка
85$$$n, m, A \le 100$$$0, 1первая ошибка
913$$$n, m, A \le 500$$$0, 1, 4, 8первая ошибка
1025без дополнительных ограничений0 – 9первая ошибка
Примеры
Входные данные
3 3
LRDU
1 2 4
4 4 4
1 1 1
Выходные данные
13
Входные данные
5 5
LRD
0 10 0 0 0
0 0 0 10 0
10 10 10 10 0
9 5 3 2 0
3 3 2 5 0
Выходные данные
30
Примечание

В первом примере выгодно лететь вниз до упора, затем вправо до упора. Первые два перелета придется совершить на высоте $$$4$$$, последние два можно совершить на высоте $$$1$$$.

Во втором примере оптимальный путь проходит по клеткам с $$$a_{i,j} = 0$$$ и стоит $$$0$$$ топлива, однако для этого надо перемещаться вверх, а перемещения вверх запрещены. В таком случае можно пролететь по «нулевым» клеткам через клетку $$$(1, 2)$$$ или $$$(2, 4)$$$ с $$$a_{1,2} = a_{2,4} = 10$$$. Для перелета через любую из них понадобится подняться на высоту $$$10$$$, после совершить два перелета на этой высоте.

Условие недоступно на русском языке
E. Innopolis Data Center
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
1024 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

В дата-центре Университета Иннополис есть $$$n$$$ серверов, занумерованных последовательными целыми числами от $$$1$$$ до $$$n$$$. Сервера соединены $$$n - 1$$$ оптоволоконными кабелями таким образом, что между любыми двумя серверами возможна передача данных по одному или нескольким кабелям, иными словами, связи между серверами образуют дерево.

Каждый оптоволоконный кабель передает данные с задержкой в $$$1$$$ единицу времени, а задержка между двумя серверами равна расстоянию в дереве между этими серверами.

Требуется выбрать несколько серверов для системы распределенного хранения данных таким образом, чтобы задержка между любыми двумя серверами, входящими в систему, не превышала $$$d$$$. Пусть выбраны сервера $$$s_1, s_2, \ldots, s_k$$$, тогда общая задержка системы равна сумме задержек между всеми $$$\frac{k (k - 1)}{2}$$$ парами серверов $$$s_i$$$. Формально:

  1. должно выполняться $$$\mathtt{dist}(s_i, s_j) \le d$$$ для любых $$$i$$$ и $$$j$$$ (где $$$\mathtt{dist}$$$ — расстояние в дереве);
  2. и тогда общая задержка системы равна $$$\sum\limits_{i \lt j} \mathtt{dist}(s_i, s_j)$$$.

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

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$d$$$ — количество серверов в дата-центре и максимальная разрешенная задержка между двумя серверами ($$$2 \le n \le 5 \cdot 10^5$$$; $$$0 \le d \le n - 1$$$).

Каждая из следующих $$$n - 1$$$ строк содержит по два целых числа $$$a_i$$$ и $$$b_i$$$ — номера двух серверов, соединенных $$$i$$$-м оптическим кабелем напрямую ($$$1 \le a_i, b_i \le n$$$). Гарантируется, что между любыми двумя серверами существует возможность передать данные по одному или нескольким последовательным кабелям.

Следующая строка содержит одно целое число $$$q$$$ — количество запросов ($$$1 \le q \le 10$$$). В $$$i$$$-й из следующих $$$q$$$ строк дано единственное целое число $$$u_i$$$ — номер сервера из $$$i$$$-го запроса ($$$1 \le u_i \le n$$$).

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

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

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

Баллы за каждую подзадачу с 1 по 4 начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Каждый тест в подзадачах 5 и 6 оценивается независимо и стоит 3 балла в подзадаче 5 или 2 балла в подзадаче 6.

ПодзадачаБаллыОграничения Необходимые подзадачи Информация о проверке
0–примеры из условияполная
112$$$n \le 15$$$0первая ошибка
211$$$d = n - 1$$$первая ошибка
313$$$n \le 300$$$0, 1первая ошибка
416$$$n \le 5000$$$0, 1, 3первая ошибка
5$$$8 \times 3$$$$$$n \le 10^5$$$0, 1, 3, 4полная
6$$$12 \times 2$$$без дополнительных ограничений0 – 6полная
Примеры
Входные данные
7 2
2 1
1 3
2 4
5 4
4 7
6 5
7
7
6
5
4
3
2
1
Выходные данные
9
4
9
9
4
9
4
Входные данные
2 0
1 2
1
1
Выходные данные
0
Примечание

В первом примере ответы на запросы соответствуют следующим множествам выбранных серверов:

  • для сервера $$$1$$$ — множество $$$\{1, 2, 3\}$$$ или $$$\{1, 2, 4\}$$$;
  • для серверов $$$2$$$, $$$4$$$, $$$5$$$ и $$$7$$$ — множество $$$\{2, 4, 5, 7\}$$$;
  • для сервера $$$3$$$ — $$$\{1, 2, 3\}$$$;
  • для сервера $$$6$$$ — $$$\{4, 5, 6\}$$$.