Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | prizes.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | prizes.out | |||
Максимальный балл: | 100 |
Петр участвует в конкурсе, в котором разыгрывается N призов. Призы пронумерованы от 1 до N.
По итогам конкурса участник может набрать от 2 до N баллов. Если участник наберет K баллов, то он получит один из призов с номером от 1 до K.
Перед тем, как участник выберет свой приз, ведущий конкурса удаляет один из призов с номером от 1 до K. Затем участник может выбрать любой приз из оставшихся K − 1.
Список призов стал известен Петру. Он определил для каждого приза его ценность, для i-го приза она задается целым числом ai.
Требуется написать программу, которая по заданным ценностям призов определяет для каждого K от 2 до N, приз с какой максимальной ценностью гарантированно достанется Петру, если он наберет в конкурсе K баллов.
Первая строка входного файла содержит число N. Вторая строка этого файла содержит N целых чисел: a1, a2, …, aN.
Выходной файл должен содержать одну строку, содержащую N − 1 целых чисел: для каждого K от 2 до N должна быть выведена ценность приза, который достанется Петру, если он наберет K баллов.
2 ≤ N ≤ 100000; 1 ≤ ai ≤ 109
Баллы за каждую подзадачу начисляются только в случае, если все тесты успешно пройдены.
N ≤ 100
N ≤ 5000
N ≤ 100 000
По запросу сообщается результат окончательной проверки на каждом тесте.
№ | Входной файл (prizes.in ) |
Выходной файл (prizes.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | space.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | space.out | |||
Максимальный балл: | 100 |
Для освоения Марса требуется построить исследовательскую базу. База должна состоять из N одинаковых модулей.
Каждый модуль представляет собой жилой отсек, который в основании имеет форму прямоугольника размером A × B метров.
Для повышения надежности модулей инженеры могут добавить вокруг каждого модуля дополнительный защитный слой. Толщина этого слоя должна составлять целое число метров, и все модули должны иметь одинаковую толщину защитного слоя.
Модуль с защитным слоем, толщина которой равна D метрам, будет иметь в основании форму прямоугольника размером (A + 2 D) × (B + 2 D) метров.
Все модули должны быть расположены на заранее подготовленном прямоугольном поле размером W × H метров.
При этом они должны быть организованы в виде регулярной сетки, их стороны должны быть параллельны сторонам поля, и модули должны быть ориентированы одинаково.
Требуется написать программу, которая по заданным количеству и размеру модулей, а также размеру поля для их размещения, определяет максимальную толщину дополнительного защитного слоя, который можно добавить к каждому модулю.
В первом примере можно установить дополнительный защитный слой толщиной 2 метра и разместить модули на поле, как показано на рисунке.
Во втором примере жилой отсек имеет в основании размер 5 × 5 метров, а поле — размер 6 × 6 метров.
Добавить дополнительный защитный слой к модулю нельзя.
Входной файл содержит пять разделенных пробелами целых чисел: N, A, B, W, H.
Гарантируется, что без дополнительного защитного слоя все модули можно разместить в поселении описанным образом.
Выходной файл должен содержать одно целое число: максимальную возможную толщину дополнительного защитного слоя.
Если дополнительный защитный слой установить не удастся, требуется вывести число 0.
1 ≤ N, A, B, W, H ≤ 1018
1 ≤ N ≤ 1000; 1 ≤ A, B, W, H ≤ 1000.
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
1 ≤ N ≤ 1000; 1 ≤ A, B, W, H ≤ 109.
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
1 ≤ N ≤ 109; 1 ≤ A, B, W, H ≤ 1018.
В этой подзадаче 8 тестов, каждый тест оценивается в 3 балла. Баллы за каждый тест начисляются независимо.
1 ≤ N ≤ 1018; 1 ≤ A, B, W, H ≤ 1018.
В этой подзадаче 9 тестов, каждый тест оценивается в 3 балла. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте.
№ | Входной файл (space.in ) |
Выходной файл (space.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 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 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 4 сек | |
Входной файл: | trains.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | trains.out | |||
Максимальный балл: | 100 |
Железная дорога Флатландии представляет собой прямую, вдоль которой расположены N станций. Будем называть участок железной дороги от некоторой станции до следующей перегоном.
Поезд следует от станции 1 до станции N, делая остановку на каждой станции. В поезде K мест, пронумерованных от 1 до K. На поезд продаются билеты, каждый билет характеризуется тремя числами: S, T и A. Такой билет позволяет проехать от станции S до станции T на месте A.
Иван планирует в один из дней летних каникул проехать на поезде от одной станции до другой. Он выяснил, что на поезд в этот день уже продано M билетов, и возможно уже нет мест, свободных на всех перегонах между интересующими его станциями. Билет от одной станции до другой на определенное место можно купить, только если это место свободно на всех перегонах между этими станциями.
Иван сообразил, что иногда все равно можно проехать от одной станции до другой, купив несколько билетов и пересаживаясь с одного места на другое на некоторых промежуточных станциях. Разумеется, пересаживаться с места на место неудобно, поэтому Иван хочет купить минимальное количество билетов, чтобы на каждом перегоне у него было свое место.
Иван еще не решил, от какой станции и до какой он поедет. Он записал Q вариантов поездки, и для каждого из них хочет узнать, какое минимальное число билетов ему придется купить, если он выберет этот вариант.
Требуется написать программу, которая по заданному описанию уже проданных билетов и вариантов поездки Ивана определяет для каждого варианта, какое минимальное количество билетов необходимо купить, чтобы совершить такую поездку.
Первая строка входного файла содержит числа N, M и K — количество станций, количество уже проданных билетов и количество мест в поезде. Последующие M строк содержат информацию о проданных билетах.
Каждая строка содержит три числа: si, ti и ai — номер станции, от которой куплен билет, номер станции, до которой куплен билет, и номер места, на которое куплен билет.
Гарантируется, что все билеты куплены таким образом, что ни на каком перегоне ни на какое место нет более одного билета.
Далее идет строка, которая содержит число Q. Последующие Q строк содержат описания вариантов поездки. Каждая строка содержит два числа: fj, dj — номер станции, от которой Иван хочет поехать в этом варианте, и номер станции, до которой он хочет поехать.
Выходной файл должен содержать Q чисел: для каждого варианта поездки требуется вывести минимальное количество билетов, которое необходимо купить Ивану, чтобы совершить соответствующую поездку. Если поездку совершить невозможно, то для этого варианта требуется вывести −1.
2 ≤ N ≤ 200 000; 0 ≤ M ≤ 200 000, 1 ≤ K ≤ 200 000
1 ≤ si < ti ≤ N; 1 ≤ ai ≤ K
1 ≤ Q ≤ 200 000; 1 ≤ fj < dj ≤ N
В этой задаче три подзадачи. Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи успешно пройдены.
Внимание! Тест из примера не подходит под ограничения для подзадач 1 и 2, но решение принимается на проверку только в том случае, если оно выводит правильный ответ на тесте из примера. Решение должно выводить правильный ответ на тест даже, если оно рассчитано на решение только каких-либо из подзадач 1 и 2.
N ≤ 100; M ≤ 100; K ≤ 100, Q = 1
N ≤ 200 000; M ≤ 200 000; K ≤ 200 000; Q = 1
N ≤ 200 000; M ≤ 200 000; K ≤ 200 000; Q ≤ 200 000
По запросу сообщаются баллы за каждую подзадачу.
На перегоне от 2-й до 3-й станции все места заняты, поэтому проехать от 1-й до 5-й станции невозможно. От 3-й до 5-й станции можно проехать, используя два билета: от 3-й до 4-й станции на место 2 и от 4-й до 5-й на место 1. От 4-й до 5-й станции можно проехать, используя один билет на место 1.
№ | Входной файл (trains.in ) |
Выходной файл (trains.out ) |
---|---|---|
1 |
|
|