Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 100 |
Дана последовательность из N целых чисел ai. Над последовательностью M раз выполняется следующая операция. Из последовательности удаляются два наименьших числа и добавляется в конец число равное сумме двух удаленных. Если наименьших чисел более двух, следует выбрать числа с наименьшими номерами в последовательности.
Требуется написать программу, выводящую последовательность, которая получится после выполнения M операций.
Первая строка входного файла содержит целые числа N и M — количество элементов последовательности и количество операций.
Вторая строка входного файла содержит N целых чисел ai — элементы последовательности.
В выходной файл требуется вывести элементы последовательности после M выполнений вышеописанной операции.
1 ≤ M < N ≤ 105
−104 ≤ ai ≤ 104
Баллы за подзадачи 1,2 начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены. Баллы за подзадачу 3 начисляются за каждый пройденный тест, если тесты необходимых подзадач пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке | |
---|---|---|---|---|---|
n | m | ||||
1 | 20 | 2 ≤ n ≤ 5 | m < n | полная | |
2 | 20 | 2 ≤ n ≤ 1000 | m < n | 1 | полная |
3 | 60 | 2 ≤ n ≤ 105 | m < n | 1,2 | полная |
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Шавлюгин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
После урока физкультуры N школьников собрались в магазине, чтобы купить воды. Купив одну бутылку, они задумались: ведь в бутылке всего M глотков воды, а денег на еще одну бутылку у них нет!
Чтобы использовать бутылку максимально эффективно, школьники поступили следующим образом: каждый из них назвал целое неотрицательное число, показывающее, насколько сильно его мучает жажда. Когда ученик делает глоток из бутылки, его жажда уменьшается ровно в десять раз (с округлением вниз).
Необходимо определить, кто из жаждущих сколько глотков должен сделать, чтобы, когда вода закончится, их суммарная жажда стала минимально возможной.
1 ≤ N, M ≤ 105
0 ≤ ai ≤ 109
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | power.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | power.out | |||
Максимальный балл: | 100 |
В физико-биологической лаборатории исследуют воздействие излучения на растения при облучении через силовые поля.
Экспериментальная установка содержит квадратную платформу размером 109 × 109, заполненную плодородной почвой. Над платформой установлен источник излучения. Между источником излучения и платформой можно включать n силовых полей.
Генератор силовых полей установлен над точкой (0, 0). При этом i-е силовое поле представляет собой прямоугольник со сторонами, параллельными границам платформы и координатами двух противоположных углов (0, 0) и (xi, yi).
В эксперименте планируется изучать воздействие излучения на растения при облучении через k силовых полей. Из заданных n полей необходимо выбрать k полей для эксперимента. Ученые хотят выбрать силовые поля таким образом, чтобы площадь участка платформы, над которой находятся все k выбранных силовых полей, была максимальна.
Требуется написать программу, которая по заданным целым числам n, k и описанию n силовых полей определяет, какие k силовых полей необходимо выбрать для эксперимента, чтобы площадь участка, покрытого всеми k силовыми полями, была максимальна, и выводит площадь этого участка.
Первая строка входного файла содержит целые числа n и k — общее количество силовых полей и количество силовых полей, которые необходимо выбрать для эксперимента.
Последующие n строк содержат по два целых числа xi, yi — координаты дальнего от начала координат угла прямоугольного участка i-го силового поля.
Требуется вывести одно целое число: максимальную площадь искомого участка.
1 ≤ k ≤ n ≤ 200 000, 1 ≤ xi, yi ≤ 109
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | |
---|---|---|---|---|
n | k | |||
1 | 18 | 1 ≤ n ≤ 20 | 1 ≤ k ≤ n | |
2 | 25 | 1 ≤ n ≤ 300 | 1 ≤ k ≤ n | 1 |
3 | 20 | 1 ≤ n ≤ 3000 | 1 ≤ k ≤ n | 1, 2 |
4 | 17 | 2 ≤ n ≤ 200 000 | k = 2 | |
5 | 20 | 1 ≤ n ≤ 200 000 | 1 ≤ k ≤ n | 1, 2, 3, 4 |
По запросу сообщается результат окончательной проверки на каждом тесте.
На рис. 1 показаны пять силовых полей, заданных во входном файле. Оптимальный способ выбрать из них три поля для эксперимента показан на рис. 2.
Рис 1. Силовые поля в примере описания входных данных.
Рис 2. Оптимальный выбор трех из пяти силовых полей в данном примере.
№ | Входной файл (power.in ) |
Выходной файл (power.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | strange.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | strange.out | |||
Максимальный балл: | 100 |
Рассмотрим строку S, состоящую из строчных букв латинского алфавита. Примером такой строки является, например, строка «abba».
Подстрокой строки S называется строка, составленная из одного или нескольких подряд идущих символов строки S. Обозначим как W(S) множество, состоящее из всех возможных подстрок строки S. При этом каждая подстрока входит в это множество не более одного раза, даже если она встречается в строке S несколько раз.
Например, W(«abba») = {«a», «b», «ab», «ba», «bb», «abb», «bba», «abba»}.
Подпоследовательностью строки S называется строка, которую можно получить из S удалением произвольного числа символов. Обозначим как Y(S) множество, состоящее из всех возможных подпоследовательностей строки S. Аналогично W(S), каждая подпоследовательность строки S включается в Y(S) ровно один раз, даже если она может быть получена несколькими способами удаления символов из строки S. Поскольку любая подстрока строки S является также ее подпоследовательностью, то множество Y(S) включает в себя W(S), но может содержать также и другие строки.
Например, Y(«abba») = W(«abba») ∪ {«aa», «aba»}. Знак ∪ обозначает объединение множеств.
Будем называть строку S странной, если для нее W(S) = Y(S). Так, строка «abba» не является странной, а, например, строка «abb» является, так как для нее W(«abb») = Y(«abb») = {«a», «b», «ab», «bb», «abb»}.
Будем называть странностью строки число ее различных странных подстрок. При вычислении странности подстрока считается один раз, даже если она встречается в строке S в качестве подстроки несколько раз. Так, странность строки «abba» равна 7, поскольку любая ее подстрока, кроме всей строки, является странной.
Требуется написать программу, которая по заданной строке S определяет ее странность.
Входной файл содержит строку S, состоящую из строчных букв латинского алфавита.
Выходной файл должен содержать одно целое число: странность заданной во входном файле строки.
Строка S имеет длину от 1 до 200 000 символов.
В этой задаче четыре подзадачи. Баллы за каждую подзадачу начисляются только в случае, если все тесты для данной подзадачи успешно пройдены.
Строка S состоит только из букв «a» и «b». Длина строки S не превышает 50.
Длина строки S не превышает 50.
Длина строки S не превышает 1000.
Длина строки S не превышает 200 000.
По запросу сообщается результат окончательной проверки на каждом тесте.
№ | Входной файл (strange.in ) |
Выходной файл (strange.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
В современном многоэтажном офисе крупной компании установлен новый лифт. В компании работает n сотрудников. Для проверки эффективности системы управления лифтом требуется провести моделирование его работы в конце рабочего дня, когда все сотрудники должны покинуть здание и спуститься на первый этаж.
В здании m этажей, пронумерованных от 1 до m снизу-вверх. Известно, что i-й сотрудник подходит к лифту в секунду ti на этаже ai, чтобы спуститься на первый этаж.
На каждом этаже могут находиться люди, ожидающие лифт. Когда очередной сотрудник подходит к лифту, он вызывает лифт, если на этом этаже лифт еще не вызван, либо присоединяется к ожидающим лифт. Таким образом, помимо вызвавшего лифт, вместе с ним лифт могут ожидать и другие сотрудники.
В каждый момент времени не более одного вызова является активным.
Изначально лифт свободен и находится на первом этаже. Когда поступает первый вызов, этот вызов становится активным и лифт отправляется на соответствующий этаж. Если несколько вызовов поступает одновременно, активным становится вызов от сотрудника с меньшим номером.
Лифт перемещается между этажами со скоростью один этаж в секунду. Когда лифт оказывается на этаже, откуда был сделан активный вызов, в него заходят все, кто уже ожидает лифт на этом этаже, и лифт отправляется вниз на первый этаж, со скоростью один этаж в секунду.
При движении вниз лифт останавливается на тех этажах, с которых на момент проезда мимо этого этажа был сделан вызов. Все ожидающие лифт сотрудники заходят в него и вызов на этом этаже сбрасывается. Когда лифт завершает движение на первом этаже, все люди выходят из лифта, а лифт ожидает следующего вызова.
Если в момент, когда лифт освободился, есть хотя бы один необслуженный вызов, активируется вызов, который поступил раньше других. Если несколько вызовов поступило одновременно, активируется вызов от сотрудника с меньшим номером. Лифт продолжает обслуживание описанным образом, пока все люди не окажутся на первом этаже.
Будем считать, что люди входят и выходят из лифта мгновенно. Каждую секунду сначала люди подходят и вызывают лифт, а затем лифт выполняет свое действие (перемещается на соседний этаж, сажает или выпускает людей, принимает решение, на какой вызов отправиться).
Требуется написать программу, которая по описанию вызовов лифта для каждого сотрудника определяет, в какой момент этот сотрудник окажется на первом этаже.
Первая строка входных данных содержит целые числа n и m — количество людей, вызывающих лифт, и количество этажей в здании.
Следующие n строк описывают сотрудников, i-я из этих строк содержит два целых числа ti и ai — секунду, в которую i-й сотрудник подходит к лифту, и номер этажа, на котором это происходит.
Выходные данные должны содержать n целых чисел, для каждого сотрудника требуется вывести секунду, в которую он выйдет из лифта на первом этаже.
1 ≤ n ≤ 105, 2 ≤ m ≤ 109
1 ≤ t1 ≤ t2 ≤ ... ≤ tn ≤ 109, 2 ≤ ai ≤ m
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке | ||
---|---|---|---|---|---|---|
n | m | ti | ||||
1 | 15 | n = 1 | 2 ≤ m ≤ 100 | 1 ≤ ti ≤ 100 | полная | |
2 | 30 | 1 ≤ n ≤ 100 | 2 ≤ m ≤ 100 | 1 ≤ ti ≤ 100 | 1 | полная |
3 | 16 | 1 ≤ n ≤ 100 | 2 ≤ m ≤ 109 | 1 ≤ ti ≤ 109 | 1, 2 | полная |
4 | 12 | 1 ≤ n ≤ 105 | 2 ≤ m ≤ 104 | 1 ≤ ti ≤ 104 | 1, 2 | полная |
5 | 27 | 1 ≤ n ≤ 105 | 2 ≤ m ≤ 109 | 1 ≤ ti ≤ 109 | 1, 2, 3, 4 | полная |
Время в секундах | 1 этаж | 2 этаж | 3 этаж | 4 этаж |
---|---|---|---|---|
0 | [~] | |||
1 | [~] | |||
2 | [~]↑3 | ☺1 | ☺2 | |
3 | [~]↑3 | ☺1 | ☺2 | |
4 | [~]←☺1 | ☺2 | ||
5 | [☺1]←☺3 | ☺4 | ☺2 | |
6 | [☺1→,☺3→]↑4 | ☺4 | ☺2 | |
7 | [~]↑4 | ☺4 | ☺2 | |
8 | [~]↑4~~~☺4 | ☺2 | ||
9 | ☺4, ☺5 | [~]←☺2 | ||
10 | [☺2]←☺4, ←☺5 | |||
11 | [☺2, ☺4, ☺5] | |||
12 | [☺2→,☺4→,☺5→] |
Обозначение | Пояснение |
---|---|
[~] | обозначение лифта |
[~]↑j | лифт движется на активный вызов, сделанный на j-м этаже |
☺i | i-й сотрудник ждет лифта |
←☺i | i-й сотрудник заходит в лифт |
[☺i] | i-й сотрудник находится в лифте |
[☺i→] | i-й сотрудник выходит из лифта |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | river.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | river.out | |||
Максимальный балл: | 100 |
Во Флатландии протекает богатая рыбой река Большой Флат. Много лет назад река была поделена между n рыболовными предприятиями, каждое из которых получило непрерывный отрезок реки. При этом i-е предприятие, если рассматривать их по порядку, начиная от истока, изначально получило отрезок реки длиной ai.
С тех пор с рыболовными предприятиями во Флатландии k раз происходили различные события. Каждое из событий было одного из двух типов: банкротство некоторого предприятия или разделение некоторого предприятия на два.
При некоторых событиях отрезок реки, принадлежащий предприятию, с которым это событие происходит, делится на две части. Каждый такой отрезок имеет длину большую или равную 2. Деление происходит по следующему правилу. Если отрезок имеет четную длину, то он делится на две равные части. Иначе он делится на две части, длины которых различаются ровно на единицу, при этом часть, которая ближе к истоку реки, имеет меньшую длину.
При банкротстве предприятия происходит следующее. Отрезок реки, принадлежавший обанкротившемуся предприятию, переходит к его соседям. Если у обанкротившегося предприятия один сосед, то этому соседу целиком передается отрезок реки обанкротившегося предприятия. Если же соседей двое, то отрезок реки делится на две части описанным выше способом, после чего каждый из соседей присоединяет к своему отрезку ближайшую к нему часть.
При разделении предприятия отрезок реки, принадлежавший разделяемому предприятию, всегда делится на две части описанным выше способом. Разделившееся предприятие ликвидируется, и образуются два новых предприятия.
Таким образом, после каждого события каждое предприятие владеет некоторым отрезком реки.
Министерство финансов Флатландии предлагает ввести налог на рыболовные предприятия, пропорциональный квадрату длины отрезка реки, принадлежащего соответствующему предприятию. Чтобы проанализировать, как будет работать этот налог, министр хочет по имеющимся данным узнать, как изменялась величина, равная сумме квадратов длин отрезков реки, принадлежащих предприятиям, после каждого произошедшего события.
Требуется написать программу, которая по заданному начальному разделению реки между предприятиями и списку событий, происходивших с предприятиями, определит, чему равна сумма квадратов длин отрезков реки, принадлежащих предприятиям, в начальный момент времени и после каждого события.
Распределение отрезков реки между предприятиями после каждого события, описанного в примере, приведено на рисунке ниже.
В этой задаче четыре подзадачи. Баллы за каждую подзадачу начисляются только в случае, если все тесты для данной подзадачи успешно пройдены.
Внимание! Тест из примера не подходит под ограничение подзадачи 3. Тем не менее, решение задачи принимается на проверку только в том случае, если оно выводит правильный ответ на тесте из примера, даже если участник претендует на правильное решение только этой подзадачи.
В первой строке каждого теста после числа n указан номер подзадачи, для теста из примера указано число 0, в тестах первой подзадачи указано число 1, и т. д.
2 ≤ n ≤ 100, 1 ≤ k ≤ 100, 1 ≤ ai ≤ 100, p = 1.
2 ≤ n ≤ 100 000, 1 ≤ k ≤ 100 000, 1 ≤ ai ≤ 104, p = 2.
Для всех i от 1 до k − 1 выполнено условие: |vi − vi + 1| ≤ 10
2 ≤ n ≤ 100 000, 1 ≤ k ≤ 100 000, 1 ≤ ai ≤ 104, p = 3.
Все события имеют тип ei = 1 (нет разделений предприятий, только банкротства).
2 ≤ n ≤ 100 000, 1 ≤ k ≤ 100 000, 1 ≤ ai ≤ 104, p = 4.
По запросу сообщается результат окончательной проверки на каждом тесте.
Первая строка входного файла содержит два целых числа: n и p — исходное количество предприятий и номер подзадачи.
Вторая строка входного файла содержит n целых чисел a1, a2, …, an — длины исходных отрезков реки.
Третья строка входного файла содержит целое число k — количество событий, происходивших с предприятиями.
Последующие k строк содержат описания событий, i-я строка содержит два целых числа: ei и vi — тип события и номер предприятия, с которым оно произошло. Значение ei = 1 означает, что предприятие, которое после всех предыдущих событий является vi-м по порядку, если считать с единицы от истока реки, обанкротилось, а значение ei = 2 означает, что это предприятие разделилось на два.
Гарантируется, что значение vi не превышает текущее количество предприятий. Гарантируется, что если отрезок предприятия при банкротстве или разделении требуется поделить на две части, то он имеет длину большую или равную 2. Гарантируется, что если на реке осталось единственное предприятие, оно не банкротится.
Выходной файл должен содержать (k + 1) целых чисел, по одному в строке. Первая строка должна содержать исходную сумму квадратов длин отрезков реки, а каждая из последующих k строк — сумму квадратов длин отрезков реки после очередного события.
2 ≤ n ≤ 100 000, 0 ≤ p ≤ 4, 1 ≤ k ≤ 100 000, 1 ≤ ai ≤ 104.
№ | Входной файл (river.in ) |
Выходной файл (river.out ) |
---|---|---|
1 |
|
|