Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Марсоход, осуществляющий международную миссию на Марсе, неисправен. Для восстановления его работоспособности необходимо повысить мощность его батареи.
Мощность батареи марсохода задаётся целым положительным числом. Текущая мощность батареи равна a, для восстановления работоспособности марсохода необходимо повысить её мощность до значения b. Для изменения мощности батареи на марсоход с Земли можно передавать специальные сигналы двух типов: X и Y. Сигнал типа X увеличивает текущую мощность батареи на 1, а сигнал типа Y увеличивает текущую мощность батареи на 2.
Организаторы миссии хотели бы изменить мощность батареи до необходимой, передав минимальное количество сигналов. К сожалению, из-за особенности устройства марсохода, если мощность батареи оказывается кратна целому числу c, он окончательно выходит из строя и перестаёт реагировать на сигналы.
Требуется написать программу, которая по заданным начальной мощности батареи a, необходимой мощности батареи b и целому числу c определяет минимальное количество сигналов, которое необходимо передать на марсоход, чтобы восстановить его работоспособность.
Входные данные содержит три целых числа: a, b и c, по одному на строке.
Требуется вывести одно целое число: минимальное количество сигналов, которые необходимо передать на марсоход.
1 ≤ a < b ≤ 109, 2 ≤ c ≤ 109, a не кратно c, b не кратно c
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 25 | 1 ≤ a < b ≤ 15, 2 ≤ c ≤ 15 | полная | |
2 | 25 | 1 ≤ a < b ≤ 105, 2 ≤ c ≤ 105 | 1 | полная |
3 | 25 | 1 ≤ a < b ≤ 109, c = 2 | полная | |
4 | 25 | 1 ≤ a < b ≤ 109, 2 ≤ c ≤ 109 | 1, 2, 3 | полная |
В первом примере можно действовать следующим образом: отправить на марсоход сигналы Y, X, Y. Мощность батареи меняется следующим образом: 2 ↦ 4 ↦ 5 ↦ 7.
Во втором примере можно действовать следующим образом: отправить на марсоход сигналы X, Y, X, Y. Мощность батареи меняется следующим образом: 4 ↦ 5 ↦ 7 ↦ 8 ↦ 10.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
В академии физической культуры разработали новый метод интервальных тренировок спортсменов. В соответствии с этим методом спортсмен должен тренироваться каждый день, однако рост нагрузки должен постоянно сменяться её снижением и наоборот.
План тренировки представляет собой набор целых положительных чисел a1, a2, …, am, где ai описывает нагрузку спортсмена в i-й день. Любые два соседних дня должны иметь различную нагрузку: ai ≠ ai + 1. Чтобы рост нагрузки и её снижение чередовались, для i от 1 до m − 2 должно выполняться следующее условие: если ai < ai + 1, то ai + 1 > ai + 2, если же ai > ai + 1, то ai + 1 < ai + 2.
Суммарная нагрузка в процессе выполнения плана должна составлять n, то есть a1 + a2 + … + am = n. Ограничения на количество дней в плане нет, m может быть любым, но нагрузка в первый день тренировок зафиксирована: a1 = k.
Прежде чем приступить к тестированию нового метода, руководство академии хочет выяснить, сколько различных планов тренировок удовлетворяет описанным ограничениям.
Требуется написать программу, которая по заданным n и k определяет, сколько различных планов тренировок удовлетворяют описанным ограничениям, и выводит остаток от деления количества таких планов на число 109 + 7.
В первой строке входных данных находятся целые числа n, k.
Выведите одно число: остаток от деления количества планов тренировок на 109 + 7.
1 ≤ n ≤ 5000, 1 ≤ k ≤ n
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 23 | 1 ≤ n ≤ 10 | полная | |
2 | 20 | 1 ≤ n ≤ 30 | 1 | первая ошибка |
3 | 23 | 1 ≤ n ≤ 500 | 1, 2 | первая ошибка |
4 | 34 | 1 ≤ n ≤ 5000 | 1, 2, 3 | только баллы |
В первом примере подходят следующие планы: [2, 1, 2, 1], [2, 1, 3], [2, 3, 1], [2, 4].
Во втором примере единственный подходящий план [3].
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Планируется отправить экспедицию к соседней звёздной системе. Были отобраны n кандидатов, пронумерованных от 1 до n, среди которых необходимо выбрать участников экспедиции. Организаторы хотят отправить в экспедицию как можно больше кандидатов.
Среди кандидатов был проведён опрос, в процессе которого каждый мог указать не более, чем одного из остальных кандидатов, с которым он не готов отправиться в экспедицию. Результатом опроса для i-го кандидата является целое число ai, которое равно номеру кандидата, с которым i-й кандидат не готов отправиться в экспедицию, либо −1, если i-й кандидат готов отправиться в экспедицию в любом составе.
Теперь организаторы должны выбрать, кто из кандидатов отправится в экспедицию. Решено было выбрать участников экспедиции так, что если туда входит некоторый кандидат i, и ai ≠ −1, то туда не входит кандидат ai. Организаторы хотят выбрать максимальное количество участников экспедиции.
Требуется написать программу, которая по заданным результатам опроса кандидатов определяет максимальное количество кандидатов, которых можно отправить в экспедицию.
В первой строке входных данных находится целое число n — количество кандидатов.
В следующих n строках даны результаты опроса, i-я из этих строк содержит результат опроса i-го кандидата, целое число ai.
В единственной строке выведите одно целое число — максимальное количество кандидатов, которых можно отправить в экспедицию.
1 ≤ n ≤ 300 000
ai = −1 или 1 ≤ ai ≤ n, ai ≠ i
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 19 | n ≤ 20 | полная | |
2 | 10 | a1 = −1, для i > 1 выполнено ai = i − 1 | первая ошибка | |
3 | 15 | для всех i выполнено ai < i | 2 | первая ошибка |
4 | 13 | 1 ≤ n ≤ 2000 | 1 | первая ошибка |
5 | 43 | 1 ≤ n ≤ 300 000 | 1, 2, 3, 4 | первая ошибка |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Космические археологи обнаружили на планете в соседней звездной системе n древних артефактов, которые они пронумеровали от 1 до n. Каждый артефакт имеет k различных параметров, каждый параметр характеризуется целым числом. Артефакт i имеет параметры ai,1, ai,2, …, ai,k. Оказалось, что первые параметры у всех артефактов различны: для всех i ≠ j выполнено ai,1 ≠ aj,1, при этом другие параметры у артефактов могут совпадать.
Учёные также обнаружили текст, в соответствии с которым для активации артефактов их необходимо особым образом разбить на пары и совместить. Разбиение артефактов на пары является корректным, если для каждого t от 1 до k можно выбрать такое число bt, что оно лежит на отрезке между значениями t-го параметра артефактов каждой пары. То есть, если артефакты i и j образуют пару, должно выполняться условие ai,t ≤ bt ≤ aj,t или условие ai,t ≥ bt ≥ aj,t.
Теперь ученые хотят выяснить, верно ли расшифрован текст. Для этого необходимо проверить, существует ли корректное разбиение артефактов на пары. Каждый артефакт должен войти ровно в одну пару в разбиении.
Требуется написать программу, которая по описанию параметров артефактов определяет, можно ли разбить их на пары таким образом, чтобы для каждого параметра существовало значение, лежащее между значениями этого параметра артефактов каждой пары, и в случае положительного ответа выводит такое разбиение.
В первой строке заданы целые числа n и k — количество артефактов и количество параметров.
В следующих n строках задано по k целых чисел ai,1, ai,2, …, ai,k — параметры артефактов.
Выведите NO
, если требуемого разбиения на пары не существует.
В противном случае выведите YES
в первой строке. Далее выведите n/2 строк, в каждой строке выведите по два числа — номера артефактов, из которых следует составить пару. Каждый артефакт должен быть выведен ровно один раз.
Если существует несколько корректных разбиений артефактов на пары, разрешается вывести любое из них.
2 ≤ n ≤ 2⋅ 105, n чётно, 1 ≤ k ≤ 7
−109 ≤ ai,j ≤ 109, все значения ai,1 различны
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 10 | 2 ≤ n ≤ 10 | полная | |
2 | 7 | 2 ≤ n ≤ 2 ⋅ 105, k = 1 | первая ошибка | |
3 | 15 | 2 ≤ n ≤ 2 ⋅ 105, для всех t все ai, t различны | 2 | первая ошибка |
4 | 15 | 2 ≤ n ≤ 2 ⋅ 105, 1 ≤ k ≤ 2 | 2 | первая ошибка |
5 | 26 | 2 ≤ n ≤ 400, 1 ≤ k ≤ 7 | 1 | первая ошибка |
6 | 27 | 2 ≤ n ≤ 2 ⋅ 105, 1 ≤ k ≤ 7 | 1, 2, 3, 4, 5 | первая ошибка |
В первом примере пары имеют следующие параметры (8,6)−(3,1), (1,5)−(7,2), (6, 3)−(4,7). При указанном разбиении на пары подойдут, например, значения b1 = 4, b2 = 4,
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|