Кот 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 | – | примеры из условия | полная | |
| 1 | 5 | $$$n \le 2$$$ | полная | |
| 2 | 5 | $$$n \le 3$$$ | 0, 1 | первая ошибка |
| 3 | 15 | $$$n, v_i, t_i \le 3000$$$ | 0 | первая ошибка |
| 4 | 20 | $$$n \le 3000$$$ | 0 – 3 | первая ошибка |
| 5 | 20 | $$$v_i = v_j$$$ для всех $$$i$$$, $$$j$$$ | первая ошибка | |
| 6 | 15 | $$$n \le 30\,000$$$ | 0 – 4 | первая ошибка |
| 7 | 5 | $$$t_i \le 10^{9}$$$ для всех $$$i$$$; $$$\sum\limits_{i=1}^n v_i \le 10^{9}$$$ | 0, 3 | первая ошибка |
| 8 | 15 | без дополнительных ограничений | 0 – 7 | первая ошибка |
22 43 5
4 4.6
31 45 22 3
2.5 2 2.375
Студенты Иннополиса придумали новую настольную игру. Игра кооперативная, то есть игроки должны играть вместе, чтобы добиться определенной цели. Одной из фаз игры является распределение ресурсов.
Игра рассчитана ровно на $$$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$$$ очка. Для успешного перехода к следующей фазе игры
Помогите игрокам определиться с выбором и успешно перейти к следующей фазе. Обратите внимание, что не требуется максимизировать количество взятых ресурсов при данном ограничении сверху, необходимо максимизировать только количество очков.
В первой строке ввода через пробелы даны два целых числа $$$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 | – | примеры из условия | полная | |
| 1 | 13 | $$$n \le 14$$$ | 0 | полная |
| 2 | 8 | $$$1 \le a_i \le 2$$$ для всех $$$i$$$ | первая ошибка | |
| 3 | 10 | $$$a_i \le 3$$$ для всех $$$i$$$ | 2 | первая ошибка |
| 4 | 12 | $$$a_n - a_1 \le 1$$$ | 2 | первая ошибка |
| 5 | 17 | $$$a_i\ \&\ a_{i+1} = a_i$$$ для всех $$$i$$$ | первая ошибка | |
| 6 | 16 | $$$a_i \le 200$$$ для всех $$$i$$$ | 0, 2, 3 | первая ошибка |
| 7 | 24 | без дополнительных ограничений | 0 – 6 | первая ошибка |
4 01 2 4 8
0
4 03 6 12 24
22
7 31 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$$$.
Компании 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$$$ можно:
Из-за погодных условий вертолет не всегда может лететь во все стороны. Доступные направления задаются строкой $$$\mathtt{s}$$$. Каждое возможное направление полета задается следующими буквами:
Увеличивать и уменьшать высоту можно всегда. Направления перемещения '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 | – | примеры из условия | полная | |
| 1 | 5 | $$$n, m, A \le 10$$$ | 0 | полная |
| 2 | 5 | $$$n, m \le 10^3$$$, $$$A \le 1$$$ | первая ошибка | |
| 3 | 5 | $$$n = 1$$$, $$$m \le 10^3$$$ | первая ошибка | |
| 4 | 7 | $$$n, m, A \le 500$$$, $$$\mathtt{s} = \text{«\t{RD}»}$$$ | первая ошибка | |
| 5 | 15 | $$$n, m \le 10^3$$$, $$$\mathtt{s} = \text{«\t{RD}»}$$$ | 4 | первая ошибка |
| 6 | 5 | $$$n, m \le 10^3$$$, и $$$a_{i - 1, j}, a_{i, j - 1} \le a_{i, j}$$$ | первая ошибка | |
| 7 | 15 | $$$n, m \le 10^3$$$, $$$\mathtt{s} = \text{«\t{LRD}»}$$$ | 5 | первая ошибка |
| 8 | 5 | $$$n, m, A \le 100$$$ | 0, 1 | первая ошибка |
| 9 | 13 | $$$n, m, A \le 500$$$ | 0, 1, 4, 8 | первая ошибка |
| 10 | 25 | без дополнительных ограничений | 0 – 9 | первая ошибка |
3 3LRDU1 2 44 4 41 1 1
13
5 5LRD0 10 0 0 00 0 0 10 010 10 10 10 09 5 3 2 03 3 2 5 0
30
В первом примере выгодно лететь вниз до упора, затем вправо до упора. Первые два перелета придется совершить на высоте $$$4$$$, последние два можно совершить на высоте $$$1$$$.
Во втором примере оптимальный путь проходит по клеткам с $$$a_{i,j} = 0$$$ и стоит $$$0$$$ топлива, однако для этого надо перемещаться вверх, а перемещения вверх запрещены. В таком случае можно пролететь по «нулевым» клеткам через клетку $$$(1, 2)$$$ или $$$(2, 4)$$$ с $$$a_{1,2} = a_{2,4} = 10$$$. Для перелета через любую из них понадобится подняться на высоту $$$10$$$, после совершить два перелета на этой высоте.
В дата-центре Университета Иннополис есть $$$n$$$ серверов, занумерованных последовательными целыми числами от $$$1$$$ до $$$n$$$. Сервера соединены $$$n - 1$$$ оптоволоконными кабелями таким образом, что между любыми двумя серверами возможна передача данных по одному или нескольким кабелям, иными словами, связи между серверами образуют дерево.
Каждый оптоволоконный кабель передает данные с задержкой в $$$1$$$ единицу времени, а задержка между двумя серверами равна расстоянию в дереве между этими серверами.
Требуется выбрать несколько серверов для системы распределенного хранения данных таким образом, чтобы задержка между любыми двумя серверами, входящими в систему, не превышала $$$d$$$. Пусть выбраны сервера $$$s_1, s_2, \ldots, s_k$$$, тогда общая задержка системы равна сумме задержек между всеми $$$\frac{k (k - 1)}{2}$$$ парами серверов $$$s_i$$$. Формально:
Ваша задача — ответить на $$$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 | – | примеры из условия | полная | |
| 1 | 12 | $$$n \le 15$$$ | 0 | первая ошибка |
| 2 | 11 | $$$d = n - 1$$$ | первая ошибка | |
| 3 | 13 | $$$n \le 300$$$ | 0, 1 | первая ошибка |
| 4 | 16 | $$$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 22 11 32 45 44 76 577654321
9 4 9 9 4 9 4
2 01 211
0
В первом примере ответы на запросы соответствуют следующим множествам выбранных серверов: