Автор: | А. Усманов, Иллюстратор: А. Логутова | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Куст трёхцветника в начале своего роста выглядит, как три ветки, направленные в разные стороны:
В начале очередного цикла цветения каждая ветка пускает два отростка в разные стороны. При этом, ветка продолжает свой рост. Отростки являются ветками, из которых в начале следующего цикла также начнут появляться новые отростки. Каждая ветка даёт отростки ровно один раз.
После первого и второго циклов цветения трёхцветник примет следующий вид:
Юному садоводу стало интересно узнать количество веток у куста трёхцветника после N циклов цветения.
Требуется написать программу, которая считывает количество циклов цветения, и вычисляет количество веток.
Первая строка содержит одно целое число N — количество циклов цветения.
В единственной строке выведите ответ на задачу.
1 ≤ N ≤ 40
Баллы начисляются пропорционально количеству пройденных тестов.
По запросу сообщается количество набранных баллов.
Тесты | Баллы |
---|---|
1-20 | По 2 балла за тест |
21-40 | По 3 балла за тест |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Усманов | Ограничение времени: | 0.25 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Почтальон Пётр привёз посылки для жителей 108 дома. В этом доме всего один подъезд, N этажей и отсутствует лифт.
Так совпало, что именно сегодня на каждый этаж необходимо доставить по одной посылке. Почтальон хочет сделать работу как можно быстрее, поэтому берёт всегда как можно больше посылок, но не более чем M штук — тяжелые они, однако.
Пётр не привык выбирать, какие посылки доставлять в первую очередь, поэтому берёт их случайно. Взяв посылки, он доставляет их в порядке возрастания этажей. Например, если почтальон взял посылки для 2, 5 и 10 этажа, то сначала он доставит посылку на 2-й этаж, потом на 5-й, потом на 10-й. После этого он возвращается в свой грузовик за новой партией. И так до тех пор, пока не будут доставлены все посылки.
Подъёмом называется суммарное количество этажей, на которое необходимо подняться, доставляя посылки. Например, если почтальон доставляет посылки на 1 и 3 этажи, а потом на 2, то сначала он поднимется на 1-й этаж, потом поднимется с 1-о этажа на 3-й, потом вернётся в грузовик за посылкой для 2-о этажа и доставит её. Подъём в данном случае будет равен 1 + (3−1) + 2 = 5.
Разумеется, от порядка доставки зависит величина подъёма. Пётр хочет узнать минимальное или максимальное возможное значение подъёма.
Требуется написать программу, которая определит минимальное или максимальное возможное значение подъёма, если известны количество этажей в доме и количество посылок, которые почтальон может унести.
Первая строка содержит одно целое число N — количество этажей в доме.
Вторая строка содержит одно целое число M — количество посылок, которые почтальон может унести за один раз.
Третья строка содержит одно целое число P. Если P = 1, то необходимо посчитать минимальное значение подъёма. Иначе P = 2 и необходимо посчитать максимальное значение подъёма.
В единственной строке выведите ответ на задачу.
1 ≤ M ≤ N ≤ 2 ⋅ 109
1 ≤ P ≤ 2
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Проверка каждой подзадачи выполняется до первой ошибки на каком-нибудь тесте этой подзадачи.
По запросу сообщается результат окончательной проверки на каждом тесте.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | |
---|---|---|---|---|
N | P | |||
1 | 22 | 1 ≤ N ≤ 103 | P = 1 | |
2 | 13 | 1 ≤ N ≤ 106 | P = 1 | 1 |
3 | 14 | 1 ≤ N ≤ 2 * 109 | P = 1 | 1-2 |
4 | 25 | 1 ≤ N ≤ 103 | P = 2 | |
5 | 11 | 1 ≤ N ≤ 106 | P = 2 | 4 |
6 | 15 | 1 ≤ N ≤ 2 * 109 | P = 2 | 4-5 |
Обратите внимание, что первый и третий примеры относится к первой подзадаче, а второй и четвёртый — к четвёртой.
В первом примере Пётр мог сначала доставить посылки на 2-й и 3-й этажи, а потом на 1-й. Подъём равен 2 + (3−2) + 1 = 4.
Во втором примере Пётр мог сначала доставить посылки на 1-й и 2-й этажи, а потом на 3-й. Подъём равен 1 + (2−1) + 3 = 5.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
Автор: | А. Усманов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
В компании работает N человек. Зарплата i-о сотрудника составляет ai бурлей.
Близится новый год, пора решать кто из сотрудников получит премию. Если на премию будет представлено k человек, то первому будет назначена премия в k бурлей, второму — в k−1 бурлей и т.д. Порядок назначения на премии совпадает с порядком сотрудников, в котором они перечислены.
Но назначение премии и её выплата не одно и тоже. Дело в том, что размер выплачиваемой премии не может превышать половину зарплаты. То есть, если у сотрудника зарплата 9 бурлей, а назначена премия в 100 бурлей, то он получит лишь 4 бурля (выплата не целого числа бурлей не осуществляется).
Выплата премий не окажет большего влияния на капитал компании, если сумма всех выплаченных премий не превышает сумму зарплат сотрудников, которые не назначались на премию. В тоже время, руководство компании хочет, чтобы как можно больше человек получили новогоднюю премию.
Помогите руководству компании определить максимальное количество человек, которым можно выплатить премию, так, чтобы это не оказало большего влияния на капитал компании.
Требуется написать программу, которая считает количество сотрудников и их зарплаты, и вычислит максимальное количество сотрудников, которые смогут получить премию.
Первая строка содержит одно целое число N — количество работников.
Далее следует N строк, в каждой из которых находится по одному целому числу ai — зарплата i-го работника.
В единственной строке выведите ответ на задачу — максимальное количество сотрудников, которые смогут получить премию.
1 ≤ N ≤ 105
1 ≤ ai ≤ 106
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Проверка каждой подзадачи выполняется до первой ошибки на каком-нибудь тесте этой подзадачи.
По запросу сообщается результат окончательной проверки на каждом тесте.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи |
---|---|---|---|
N | |||
1 | 25 | 1 ≤ N ≤ 102 | |
2 | 20 | 1 ≤ N ≤ 103 | 1 |
3 | 15 | 1 ≤ N ≤ 104 | 1-2 |
4 | 40 | 1 ≤ N ≤ 105 | 1-3 |
В первом примере суммарная зарплата двух последних сотрудников равна 5. Этого не хватит, чтобы выдать премию трём другим сотрудникам, так как их премия составит 6 = 3 + 2 + 1.
Во втором примере суммарная зарплата двух последних сотрудников будет равна премии первых двух: 5 = 2 + 2 + 1, так как первый сотрудник не может получать премию больше, чем 5 / 2 = 2.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | А. Усманов | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Дедушка Леонида — мастер по плетению рыболовных сетей. Для создания таких сетей требуется обладать должным талантом и терпением. Настоящие мастера плели свои сети очень прочными, используя при этом ровно одну цельную верёвку.
Сеть представляет N узлов, соединённых между собой M рёбрами. Будем считать, что сеть могла быть сплетена одной цельной верёвкой, если существует непрерывный путь, проходящий через каждое ребро ровно по одному разу. Путь должен начинаться и заканчиваться в узлах.
Леонид нашел на чердаке рыболовную сеть своего дедушки. Ему стало интересно, могла ли быть сплетена эта сеть ровно из одной цельной верёвки.
Требуется написать программу, которая считывает описание сети, и определяет, могла ли эта сеть быть сплетена ровно из одной цельной верёвки.
Первая строка содержит два целых числа N и M — количество узлов и рёбер у рыболовной сети соответственно.
Далее идёт M строк, в каждой из которых записано два целых числа ui и vi — номера узлов, между которыми проходит i-е ребро.
Гарантируется, что у каждого узла есть хотя бы одно ребро.
Обратите внимание, что у сети могут быть петли и кратные рёбра.
Петлёй называется ребро, соединяющее узел с самим собой.
Кратные ребра — два и более рёбер, соединяющих одну и ту же пару узлов.
В единственной строке выведите "Yes" или "No" (без кавычек) — могла ли данная сеть быть сплетена ровно из одной цельной верёвки.
1 ≤ N ≤ 105
1 ≤ M ≤ 2 ⋅ 105
1 ≤ ui, vi ≤ N
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Проверка каждой подзадачи выполняется до первой ошибки на каком-нибудь тесте этой подзадачи.
По запросу сообщается результат окончательной проверки на каждом тесте.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | |
---|---|---|---|---|
N | M | |||
1 | 18 | 1 ≤ N ≤ 10 | 1 ≤ M ≤ 10 | |
2 | 20 | 1 ≤ N ≤ 103 | 1 ≤ M ≤ 2 ⋅ 103 | 1 |
3 | 29 | 1 ≤ N ≤ 105 | M = N − 1 | |
4 | 33 | 1 ≤ N ≤ 105 | 1 ≤ M ≤ 2 ⋅ 105 | 1-3 |
Первая сеть могла быть сплетена следующим образом:
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
Автор: | А. Усманов | Ограничение времени: | 2 сек | |
Ввод / вывод: | интерактивный | Ограничение памяти: | 256 Мб | |
Максимальный балл: | 100 |
Данная задача является интерактивной.
Долгое время мальчик Петя коллекционировал целые числа. Сейчас в его коллекции уже N чисел. Разумеется, Петя бережно относится к своей коллекции: не разбрасывает по квартире, и, более того, хранит её отсортированной по неубыванию.
Сегодня Петя решил, что хранить числа в отсортированном виде не так интересно, поэтому он хочет перемешать их и получить новую последовательность.
Неровностью последовательности называется сумма модулей разности почти соседних элементов. Два элемента последовательности являются почти соседними, если их номера отличаются ровно на K. Например, если K = 2, тогда почти соседними элементами являются числа на позициях 1 и 3, 2 и 4, 3 и 5 и т.д.
Петя уже очень хорошо знает математику, поэтому он смог написать формулу для подсчета неровности: ∑N−Ki=1|ai − ai+K|. Теперь Петя хочет узнать минимальное значение неровности, которое можно получить для его коллекции после перестановки элементов. Вы должны ему с этим помочь.
Петя не готов просто так показывать свою коллекцию первому встречному, потому что боится, что её могут украсть. Но чтобы вы всё таки смогли ему помочь, он готов ответить на несколько вопросов касательно своей коллекции. А именно — он может назвать модуль разности между двумя любыми элементами последовательности. Петя может ответить лишь на Q вопросов, после этого он начнёт подозревать вас в попытке скопировать коллекцию.
Сначала на вход программе-решению подаётся два целых числа N и K — количество чисел в последовательности и расстояние между почти соседними элементами.
Для каждого теста жюри зафиксировало число Q — максимальное количество вопросов, которые можно задать. Гарантируется, что Q вопросов достаточно, чтобы решить задачу. Это число не сообщается программе-решению. Если решение делает более Q вопросов, то на этом тесте оно получает в качестве результата тестирования "Wrong answer".
Чтобы задать вопрос программа-решение должна вывести строку вида "? i j", где i и j (1 ≤ i, j ≤ N) — целые числа, номера чисел в последовательности. В ответ на вопрос программа жюри подаёт на вход программе-решению значение |ai − aj| — модуль разности соответствующих элементов последовательности.
Если программа-решение определила ответ на задачу, она должна вывести строку "! ans", где ans — ответ на задачу. После этого программа-решение должна завершиться.
Гарантируется, что в каждом тесте числа в последовательности не изменяются в зависимости от вопросов программы-решения.
Каждый вопрос и вывод ответа должен заканчиваться символом перевода строки \n, а также необходимо выполнить сброс буфера:
Язык | C++ | Pascal | Java | Python |
Сброс буфера | cout.flush() | flush(output) | System.out.flush() | stdout.flush() |
1 ≤ N ≤ 106
1 ≤ K ≤ 103
1 ≤ ai ≤ 109
a1 ≤ a2 ≤ ... ≤ aN−1 ≤ aN
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Проверка каждой подзадачи выполняется до первой ошибки на каком-нибудь тесте этой подзадачи.
По запросу сообщается результат окончательной проверки на каждом тесте.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | ||
---|---|---|---|---|---|
N | K | Q | |||
1 | 5 | 1 ≤ N ≤ 102 | 1 ≤ K ≤ 2 | Q = 5 | |
2 | 7 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 8 | Q = 1000 | 1 |
3 | 7 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 10 | Q = 1000 | 1-2 |
4 | 8 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 10 | Q = 125 | 1-3 |
5 | 8 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 14 | Q = 125 | 1-4 |
6 | 9 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 18 | Q = 125 | 1-5 |
7 | 9 | 1 ≤ N ≤ 104 | 1 ≤ K ≤ 20 | Q = 125 | 1-6 |
8 | 11 | 1 ≤ N ≤ 103 | 1 ≤ K ≤ 30 | Q = N | |
9 | 5 | 1 ≤ N ≤ 105 | 1 ≤ K ≤ 40 | Q = 1700 | 1-4 |
10 | 6 | 1 ≤ N ≤ 105 | 1 ≤ K ≤ 60 | Q = 1900 | 1-5, 9 |
11 | 7 | 1 ≤ N ≤ 105 | 1 ≤ K ≤ 80 | Q = 1800 | 1-6, 9-10 |
12 | 8 | 1 ≤ N ≤ 105 | 1 ≤ K ≤ 100 | Q = 2600 | 1-7, 9-11 |
13 | 10 | 1 ≤ N ≤ 106 | 1 ≤ K ≤ 1000 | Q = K | |
N mod K = 0 |
Примеры из условия представлены таким образом, чтобы продемонстрировать взаимодействие программы-решения и программы жюри.
Обратите внимание, что первый и второй примеры относятся к первой подзадаче, а третий и четвёртый — ко второй.
В первом примере можно расположить первые четыре числа на четных позициях, а остальные числа — на нечетных.
Во втором примере выгоднее всего не менять расположение чисел.
В третьем примере исходная последовательность может быть следующей: 1 4 5 7 13. Расположить эти числа так, чтобы неровность была минимальна, можно несколькими способами. Например, 1 7 13 4 5. Тогда разница между почти соседними элементами равна: |1 − 4| + |7 − 5| = 3 + 2 = 5.
В четвёртом примере нет ни одной пары почти соседних элементов.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|