Страница: << 65 66 67 68 69 70 71 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Мирко стал генеральным директором крупной корпорации. В компании работает N человек, пронумерованных от 1 до N , Мирко имеет номер 1 . У всех кроме Мирко есть начальник. Начальник может иметь несколько подчинённых, но не более одного своего начальника.

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

Этот работник получает 1 монету, его начальник получает 2 монеты, начальник этого начальника получает 3 и так далее. Потом тот, кто на самом деле сделал работу, осознаёт, насколько эта капиталистическая система несправедлива и увольняется с работы.

Мирко получает задания до тех пор, пока в корпорации не останется всего один сотрудник — сам Мирко. Тогда он выполняет это задание, получает 1 монету и уходит из корпорации. Ему стало интересно, сколько всего монет получил каждый бывший сотрудник. Помогите ему с этим.

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

Первая строка содержит одно натуральное число N ( 1 ≤ N ≤ 2·10 5 ) — число сотрудников компании. Следующая строка содержит N - 1 чисел a 2 , a 3 , ... a n ( 1 ≤ a i < i ), a i — номер начальника i -го сотрудника.

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

Выведите N чисел, i -е число должно означать, сколько монет получил i -й сотрудник

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

Программы, верно работающие при 2 ≤ N ≤ 5000 оцениваются в 50 баллов.

Примечание

Пояснения к первому примеру:

Пояснения ко второму примеру:
Примеры
Входные данные
3
1 1
Выходные данные
5 1 1 
Входные данные
5
1 2 2 4
Выходные данные
13 8 1 3 1 
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
256 megabytes

Петя увлёкся алгоритмами сжатия данных. Он уже изучил форматы gz , bz , zip и несколько других. Воодушевившись новыми знаниями, Петя собрался разработать свой формат сжатия и назвать его dis .

Петя решил сжимать таблицы. У него есть таблица, состоящая из n строк и m столбцов, заполненная целыми положительными числами. Он хочет заменить значения элементов таблицы на целые положительные числа так, чтобы отношение элементов в каждой строке и каждом столбце не изменилось. То есть, если в некоторой строке исходной таблицы a i , j < a i , k , то и в сжатой таблице a ' i , j < a ' i , k , и если a i , j = a i , k , то a ' i , j = a ' i , k . Аналогично, если в некотором столбце исходной таблицы a i , j < a p , j , то и в сжатой таблице a ' i , j < a ' p , j , и если a i , j = a p , j , то a ' i , j = a ' p , j .

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

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

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

В первой строке входных данных содержатся два числа n и m ( — количество строк и столбцов таблицы соответственно.

В следующих n строках содержится по m целых чисел a i , j (1 ≤ a i , j ≤ 10 9 ) — значения элементов таблицы.

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

Выведите сжатую таблицу: n строк, содержащих по m чисел.

Если существует несколько ответов, минимизирующих максимальное число, то разрешается вывести любой из них.

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

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

Примечание

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

Примеры
Входные данные
2 2
1 2
3 4
Выходные данные
1 2
2 3
Входные данные
4 3
20 10 30
50 40 30
50 60 70
90 80 70
Выходные данные
2 1 3
5 4 3
5 6 7
9 8 7
ограничение по времени на тест
5.0 second;
ограничение по памяти на тест
512 megabytes

Скажем, что последовательность строк t 1 , ..., t k является путешествием длины k , если для всех i > 1 t i является подстрокой t i - 1 строго меньшей длины. Например, { ab , b } является путешествием, а { ab , c } или { a , a } — нет.

Определим путешествие по строке s как путешествие t 1 , ..., t k , все строки которого могут быть вложены в s так, чтобы существовали (возможно, пустые) строки u 1 , ..., u k + 1 , такие, что s = u 1 t 1 u 2 t 2 ... u k t k u k + 1 . К примеру, { ab , b } является путешествием по строке для abb , но не для bab , так как соответствующие подстроки расположены справа налево.

Назовём длиной путешествия количество строк, из которых оно состоит. Определите максимально возможную длину путешествия по заданной строке s .

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

В первой строке задано целое число n ( 1 ≤ n ≤ 500 000 ) — длина строки s .

Во второй строке содержится строка s , состоящая из n строчных английских букв.

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

Выведите одно число — наибольшую длину путешествия по строке s .

Примечание

В первом примере путешествием по строке наибольшей длины является { abcd , bc , c } .

Во втором примере подходящим вариантом будет { bb , b } .

Примеры
Входные данные
7
abcdbcc
Выходные данные
3
Входные данные
4
bbcb
Выходные данные
2
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

Популярная сеть быстрого питания «McDuck's» открыла новый филиал в Берляндии. В ресторане установлено \(k\) плит. Для того чтобы приготовить бургер, надо жарить котлету в течение минуты на одной из плит, поэтому ресторан может готовить не более \(k\) бургеров в минуту.

Известно, что в «McDuck's» придут \(n\) клиентов. \(i\)-й из них придёт в момент времени \(t_i\), закажет \(x_i\) бургеров и будет готов заплатить за них \(c_i\) бурлей. Каждый клиент готов ждать заказ в течение \(w\) минут и, если через \(w\) минут после прихода он не получил \(x_i\) бургеров, он не заплатит ничего. При этом каждый клиент готов получать только свежие бургеры, то есть только те, котлеты для которых были поджарены не раньше времени \(t_i\). Из-за таких сложных требований ресторан не всегда сможет выполнить все заказы всех клиентов.

Менеджеров ресторана заинтересовало, какую максимальную прибыль может получить «McDuck's». Помогите им ответить на этот непростой вопрос. Можно считать, что на готовку бургеров не расходуется никаких денег.

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

В первой строке содержатся три целых числа \(n\), \(k\) и \(w\) (\(1 \le n \le 100\,000\), \(1 \le k \le 10\), \(1 \le w \le 60\)) — число клиентов, число плит и время ожидания клиента, соответственно.

Следующие \(n\) строк содержат описания клиентов, состоящие из трёх целых чисел — \(t_i\), \(x_i\), \(c_i\) (\(1 \le t_i, x_i, c_i \le 10^9\)) — время (в минутах) прихода \(i\)-го клиента, число бургеров, которые он закажет и число бурлей, которые он готов заплатить, соответственно. Клиенты перечислены в порядке возрастания времени прихода, то есть для любого \(i \ge 2\) верно, что \(t_{i - 1} \le t_i\).

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

В единственной строке выведите одно число — максимальную прибыль ресторана.

Примечание

В первом тестовом примере первую котлету можно поставить жариться в момент времени 0 и тогда в момент времени 1 она будет готова и её можно будет дать в бургере первому клиенту. В момент времени 1 можно поставить жариться ещё одну котлету, она будет готова в момент времени 2 и её можно будет дать в бургере второму клиенту.

Примеры
Входные данные
2 1 1
1 1 5
1 1 7
Выходные данные
12
Входные данные
3 2 2
1 6 8
2 5 10
3 4 4
Выходные данные
12
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

Назовем подпоследовательностью массива \(a\) непустой массив \(b\) такой, что он может быть получен из массива \(a\) удалением нескольких (возможно, никаких) элементов массива \(a\). Например, массив \([1, 3]\) является попоследовательностью массива \([1, 2, 3]\), но \([3, 1]\) не является.

Назовем подотрезком массива \(a\) непустой массив \(b\) такой, что он может быть получен путем удаления нескольких (возможно, никаких) первых и последних элементов массива \(a\). Например, \([1, 2]\) является подотрезком массива \([1, 2, 3]\), а \([1, 3]\) не является. Несложно заметить, что у массива длины \(n\) ровно \(\frac{n(n + 1)}{2}\) подотрезков.

Назовем массив \(a\) длины \(n\) возрастающим , если для любого \(1 \leq i < n\) выполняется \(a_i < a_{i + 1}\).

Монотонностью массива назовем количество его возрастающих подотрезков.

Дан массив \(a\) длины \(n\). Посчитайте сумму монотонностей по всем его подпоследовательностям. Так как ответ может быть очень большим, выведите его по модулю \(10^9 + 7\).

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

В первой строке задано целое число \(n\) (\(1 \leq n \leq 200\,000\)) — длина массива \(a\).

Во второй строке заданы \(n\) целых чисел (\(1 \leq a_i \leq 200\,000\)) — элементы массива \(a\).

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

Выведите одно целое число — сумму монотонностей всех подпоследовательностей по модулю \(10^9 + 7\).

Примечание

В первом тестовом примере у массива есть \(7\) подпоследовательностей:

  • У массива \([1]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([2]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([3]\) есть ровно один подотрезок и он является возрастающим.
  • У массива \([1, 2]\) есть три подотрезка (\([1], [2], [1, 2]\)) и все они являются возрастающими.
  • У массива \([1, 3]\) есть три подотрезка (\([1], [3], [1, 3]\)) и все они являются возрастающими.
  • У массива \([3, 2]\) есть три подотрезка (\([3], [2], [3, 2]\)), но только два из них (\([3]\) и \([2]\)) являются возрастающими.
  • У массива \([1, 3, 2]\) есть шесть подотрезков (\([1], [3], [2], [1, 3], [3, 2], [1, 3, 2]\)) и четыре из них (\([1], [3], [2], [1, 3]\)) являются возрастающими.

Во втором тестовом примере все возрастающие подотрезки всех подпоследовательностей имеют длину \(1\).

Примеры
Входные данные
3
1 3 2
Выходные данные
15
Входные данные
3
6 6 6
Выходные данные
12

Страница: << 65 66 67 68 69 70 71 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест