Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Сказочные шахматы — раздел шахматной композиции. В произведениях этого раздела присутствуют изменения некоторых из общепринятых правил игры или применяются необычные фигуры или доски.
Амазонка представляет собой сказочную шахматную фигуру, которая может двигаться как ферзь или конь. На диаграммах обозначается символом коня с короной. На рисунке ниже Вы можете видеть все возможные ходы этой фигуры. Амазонка настолько сильная и независимая, что может поставить мат вражескому королю без помощи другой дружественной фигуры.
На обычной шахматной доске находятся белая амазонка и черный король. Определите, объявлен ли мат королю.
Первая строка входных данных содержит два натуральных числа, записанных через пробел: x1 и y1 — координаты белой амазонки. Во второй строке в том же формате содержатся координаты чёрного короля x2 и y2. Гарантируется, что позиции фигур различны.
Выведите Yes
или No
— ответ на вопрос задачи.
1 ≤ x1, x2, y1, y2 ≤ 8
Смотри рисунок. Во втором примере король может атаковать амазонку.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Ох уж эти уроки математики! Сегодня, например, прошла четвертная контрольная работа. Тем, кто успешно справился раньше времени, учитель предлагал решить дополнительное задание и получить бонусные баллы.
На доске записаны два n-значных числа, первое — состоящее только из цифры d1, второе — только из цифры d2. Определите, какая цифра находится на k-м месте в сумме этих чисел. Места пронумерованы слева направо начиная с 1.
Вам же нужны дополнительные баллы?
Четыре строки входных данных содержит четыре натуральных числа: n, d1, d2 и k. Гарантируется корректность k.
Выведите одну десятичную цифру — ответ на вопрос задачи.
1 ≤ n ≤ 109
1 ≤ k ≤ n + 1
1 ≤ d1, d2 ≤ 9
В примере n = 2 (складываются двузначные числа), d1 = 5 (первое число 55), d2 = 8 (второе число 88). Сумма 55 + 88 = 143. k = 1 (учителя интересует первая цифра результата). На первом месте в числе 143 цифра 1.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Имеется набор треугольников, заданных трехмерными координатами своих вершин.
Требуется сформировать все максимальные поднаборы из треугольников, такие что в каждом наборе все треугольники лежат в одной плоскости.
Входные данные содержат натуральное число N, за которым следует 9 × N целых чисел, задающих координаты вершин:
(X1i, Y1i, Z1i), (X2i, Y2i, Z2i), (X3i, Y3i, Z3i), где i = 0, 1, …, (N − 1).
Выходные данные должны содержать число поднаборов M, за которым следует M записей следующего вида.
Сначала указывается число треугольников, включенных в набор, после чего следуют их номера во входных данных (нумерация начинается с 0).
Как наборы, так и треугольники в наборе можно перечислять в произвольном порядке.
Гарантируется, что в исходном наборе отсутствуют вырожденные треугольники (с нулевой площадью).
− 1000 ≤ (Xki, Yki, Zki) ≤ 1000,
2 ≤ N ≤ 105.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Имеется прямоугольное ASCII-изображение цифровой схемы, состоящей из логических элементов и связывающих их проводов.
Логические элементы представлены как прямоугольные области, обрамленные рамкой из символов '#' (ASCII 35).
Внутри каждой рамки обязательно содержится описание из цифр и строчных символов латинского алфавита.
Описание может быть разбито на части, разделенные пробелами либо разнесенные по разным строкам.
Провода обозначены в виде последовательностей из символов '.' (ASCII 46).
Оставшееся свободное пространство схемы заполнено пробелами.
Рамки никаких двух элементов не могут стыковаться между собой (между ними всегда имеется зазор).
Провода могут стыковаться между собой только под углом в 90 ∘ .
Параллельные провода не могут идти вплотную друг к другу (между ними всегда имеется зазор).
Элемент считается подключенным к проводу, если их символы
стыкуются в вертикальном либо горизонтальном направлении.
Провод не может пройти через занятую элементом область.
Шина это набор связанных между собой проводов.
На заданном изображении требуется выделить набор логических элементов и связанных с ними шин.
Входные данные содержат ASCII-изображение.
Выходные данные должны содержать количество логических элементов N,
за которым следует N строк, содержащих описание одного элемента в каждой строке.
Части описания должны быть разделены пробелами.
Порядок элементов в списке должен соответствовать порядку,
в котором они встречаются на исходном изображении
при его обходе построчно от левого верхнего угла.
Далее указывается число шин M, за которым следуют наборы
подключенных к ним элементов.
В начале каждого набора указывается число его элементов,
затем следуют их номера
(начиная с нуля).
Общее количество символов изображения не превосходит 106.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Рассмотрим множество всех возможных строк длиной ровно n символов, состоящих из цифр и строчных букв латинского алфавита.
Расстояние Хэмминга H(A, B) равно количеству позиций i от 1 до n
таких что A[i] ≠ B[i].
Определим P(A, B) как множество строк длины n, равноудаленных от A и B
({ C: H(A, C) = H(B, C)}).
Требуется определить количество строк в множестве P(A, B).
Так как ответ может оказаться слишком большим, выведите остаток от его деления на 109.
Входные данные содержат две строки: A и B.
Выведите единственное целое число — ответ.
1 ≤ n ≤ 104.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | A. Usmanov | Ограничение времени: | 1 сек | |
Ввод / вывод: | интерактивный | Ограничение памяти: | 512 Мб |
Данная задача является интерактивной. Ваша программа будет взаимодействовать с программой жюри путем отправки и приема сообщений определенного вида.
Шахматная доска представляет из себя поле из 8 на 8 чередующихся белых и черных клеток.
Столбцы шахматной доски обозначаются буквами от A до H, строки — цифрами от 1 до 8.
Координаты клетки записываются как [столбец][строка]
, например, E2.
Левый нижний угол, клетка A1, имеет черный цвет.
На шахматной доске расположился слон на клетке с цветом color. Напомним, что эта шахматная фигура может двигаться по диагонали в любом направлении на любое количество клеток. Целью является определить фактическую позицию слона, устанавливая наблюдение за некоторыми прямоугольными областями доски.
Ваша программа должна делать запросы вида "? A B
", где A и B — координаты двух клеток игрового поля,
левого нижнего и правого верхнего углов прямоугольника, за которым вы хотите установить мониторинг.
После каждого запроса слон совершает ход, и вам сообщается в какие из наблюдаемых прямоугольников попал слон после этого хода.
Требуется определить текущее положение слона, сделав не более 6 запросов. Гарантируется, что перемещение слона определено заранее и не зависит от запросов.
В первой строке входных данных записана строка color, равная white
или black
—
цвет клетки, на которой изначально стоит слон.
Чтобы сделать запрос, ваша программа должна вывести "? A B
",
где A, B — строки из двух символов, координаты левого нижнего и правого верхнего углов прямоугольника, за которым нужно установить наблюдение.
После установки наблюдения слон совершает ход, и программа жюри отвечает вашей программе строкой S из символов 1 или 0 — где i-й символ равен 1, если слон попал в i-й наблюдаемый прямоугольник.
Когда ваша программа определила текущее положение слона X, она должна вывести "! X
",
где X
— строка из двух символов, координаты клетки слона.
После вывода ответа программа должна завершиться.
Если ваша программа сделает недопустимый запрос, то она получит вердикт "Presentation error". Если ваша программа превысит допустимое количество запросов, то она получит вердикт "Wrong answer".
Каждый запрос и вывод окончательного результата должен быть одиночной строкой
заканчивающейся одиночным переводом строки (\n
).
Буфер вывода необходимо сбрасывать после каждой строки:
Язык | C++ | Pascal | Java | Python |
Код | cout.flush() |
flush(output) |
System.out.flush() |
stdout.flush() |
"A1"
≤ A, B, X ≤ "H8"
A ≤ B
Перемещения слона и установленные области наблюдения из первого примера представлены на картинке.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Пусть нам известны два непересекающихся набора узлов некоторого ориентированного графа: A и B.
Для каждого узла из множества A задан набор всех достижимых из него узлов из B.
При этом узлы из A не должны иметь входящих ребер, а узлы из B — выходящих.
В графе также могут быть промежуточные узлы (множество C), связанные ребрами с узлами из A и B.
При этом никакие два узла из множества C не могут быть связаны между собой.
Требуется получить граф с минимальным числом ребер, который удовлетворяет заданному описанию.
Если существует несколько вариантов, предпочтение отдается графу с минимальным числом узлов.
В качестве ответа следует вывести число узлов и ребер в полученном графе.
Входные данные содержат целые числа: N — размер множества A и M — размер множества B.
Далее следуют наборы узлов множества B, достижимых из каждого узла множества A.
В начале набора указывается число узлов в наборе (может быть нулевым),
а затем уже следуют номера самих узлов (нумерация начинается с нуля).
Выходные данные должны содержать два целых числа: число узлов и ребер.
1 ≤ (N, M) ≤ 1000
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
В городке N — радостное событие! На единственной улице установят фонарь и откроют аптеку. Помогите градоначальнику установить оптимальное место для размещения этих объектов.
Представим улицу отрезком координатной оси, на которой самый левый дом имеет координату 0. Будем считать размер домов ничтожно малым по сравнению с протяженностью улицы и станем отмечать их точками на оси.
У фонаря есть параметр "яркость", выражающий, на каком максимальном расстоянии от фонаря всё еще светло. Например, при яркости, равной 10, фонарь, установленный в точке x = 25, будет освещать улицу на отрезке от 15 до 35, включая границы.
У аптеки есть параметр "удаленность", выражающий, на каком расстоянии домов от нее, люди, живущие в этих домах, будут её посещать. Например, при удаленности, равной 100, аптека, размещенная в точке x = 25, будет посещаться людьми, живущими в домах с координатами на отрезке от 0 до 125, включая границы (домов с отрицательными координатами нет).
Первая строка входных данных содержит три натуральных числа, записанных через пробел: n — количество домов, a — яркость и b — удаленность. В следующих n строках через пробел расположены по два неотрицательных целых числа xi, qi — координату дома и количество проживающих в нем людей (дома могут быть пустые).
Выведите через пробел два целых числа — наибольшее количество освещенных после установки фонаря домов и наибольшее количество людей, которые будут посещать аптеку. И аптека, и фонарь могут быть расположены как между домами так и в точках с координатами домов.
1 ≤ n, a, b ≤ 105
0 ≤ xi, qi ≤ 109
В примере дано пять домов, яркость фонаря 15 и удаленность аптеки 20. Фонарь может быть установлен либо в точке 15, либо в точке 25, в обоих случаях освещено будет 4 дома. Аптеку можно расположить в точке 20, в этом случае посещать её смогут все жители города.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Женя Славин — первый человек, родившийся на Марсе. Он еще маленький, и очень любит смотреть на электронные часы, висящие напротив его кровати. Больше всего ему нравятся моменты, когда все цифры на табло становились одинаковыми. В такие моменты он всегда радуется и хлопает в ладоши.
Поскольку период обращения Марса вокруг своей оси отличается от земного, марсианские колонисты определили, что:
Текущее время на Марсе — hM часов, mM минут и sM секунд. Через сколько секунд Женя захлопает в ладоши? Время на марсианских электронных часах выводится с ведущими нулями во всех разрядах, лишние разряды не используются.
Во входных данных содержатся шесть целых чисел, по одному в строке: h, m и s — описание разбиения марсианских суток, затем hM, mM и sM — текущее время.
Выведите одно целое число — количество секунд до того момента, как все цифры на табло станут одинаковыми.
0 ≤ hM < h ≤ 106
0 ≤ mM < m ≤ 106
0 ≤ sM < s ≤ 106
В первом примере марсианские сутки ничем не отличаются от земных (24 часа по 60 минут по 60 секунд). Сейчас 23 часа 50 минут ровно (на табло горят цифры 23:50:00
). Через 10 минут (или 600 секунд) на табло во всех разрядах будут гореть одни нули.
Во втором примере марсианские сутки содержат 627 часов по 5 минут по 777 секунд. Сейчас 49 часов 3 минуты и 2 секунды (на табло горят цифры 049:3:002
). Через 61 час 3 минуты и 109 секунд (или 239425 марсианских секунд) на табло во всех разрядах будут гореть одни единицы.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Марина Цветаева, Андрей Белый и Саша Чёрный коротают вечер за шахматной доской. В каждой партии играют двое, третий ждет своей очереди, чтобы занять место проигравшего. Победитель предыдущей партии в следующей играет белыми фигурами.
После завершения n партий поэты серебряного века с удивлением обнаружили закономерность, что белые выигрывали ровно k партий подряд, а в следующей партии всегда побеждали черные.
Андрей Белый любит играть белыми фигурами, Саша Чёрный — черными, Марина Цветаева любит играть любым цветом. Определите количество партий, в которых оба противника играли своим любимым цветом. В самой первой партии встречались Белый (играл белыми) и Черный. Ни одна партия не завершилась вничью.
Две строки входных данных содержат два натуральных числа n и k.
Выведите одно натуральное число — ответ на вопрос задачи.
1 ≤ n ≤ 109
1 ≤ k ≤ 100
Было сыграно 4 партии, игравший белыми выигрывал 1 партию, следующую — проигрывал.
В первой партии Белый — Чёрный оба играют любимым цветом. Игравший белыми Андрей побеждает.
Во второй партии Белый — Цветаева оба играют любимым цветом. Игравший белыми Андрей проигрывает.
В третьей партии Цветаева — Черный оба играют любимым цветом. Игравшая белыми Марина побеждает.
В последней партии Цветаева — Белый только Марина играет любимым цветом. Итого ответ: 3 партии.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
В детском парке открылся новый аттракцион "Карусель" на n мест. Согласно технике безопасности при её эксплуатации рассаживать детей можно только таким образом, чтобы центр тяжести всех катающихся совпадал с центром карусели и расстояния между ними по окружности были одинаковыми. Например, при n = 6 одновременно могут кататься 2, 3 или 6 ребят, а при n = 5 — только ровно 5. Другими словами, разрешается запустить карусель, если на ней размещено k детей, причём k — делитель n и k ≠ 1.
В очереди к карусели стоит d детей. Дети, которые покатались на карусели, уходят в поисках новых развлечений. Какое минимальное количество запусков аттракциона следует осуществить, чтобы все дети прокатились на карусели ровно по одному разу?
Две строки входных данных содержат натуральные числа n и d.
Выведите одно натуральное число — ответ к задаче. Если всех ребят прокатить не получится, выведите -1.
1 ≤ (d, n) ≤ 105
В первом примере дано n = 16 и d = 14 (карусель на 16 мест, в очереди 14 детей). Достаточно 3 запуска карусели: в первый раз прокатятся 8 ребят, во второй — 4, в третий — 2.
Во втором примере дано n = 15 и d = 7. Всех детей прокатить не получится, так как согласно правилам разрешено катать только по 3, 5 или 15 ребят.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Сегодня к Оле в гости придет N одногруппников, из-за чего она решила приготовить N тортов. В ее распоряжении есть M грамм сахара. Поскольку Оля не хочет никого обидеть, в каждом торте должно быть одинаковое количество сахара. Какое максимальное количество сахара может содержать каждый торт?
Входные данные содержат числа M и N, каждое на новой строке.
Необходимо вывести единственное число — максимальное количество сахара.
1 < N, M < 10000
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Н. Чистякова | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Оксана любит плавать и готовится к заплыву через Амурский залив. Для подготовки она каждый день приходит в бассейн и проводит там несколько часов, переплывая от одного края бассейна до другого. Длина бассейна, где занимается Оксана — N метров. Она успевает пересечь его за M секунд, и ещё K секунд тратит на разворот. Сколько метров Оксана успеет проплыть за L минут?
Первая строка входного файла содержит четыре натуральных числа: N M K L.
Выходной файл должен содержать единственное целое число — количество проплытых метров.
1 ≤ N, M, K, L ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Московская олимпиада для 7-9 кл., 2005 | Ограничение времени: | 3 сек | |
Входной файл: | a.in | Ограничение памяти: | 64 Мб | |
Выходной файл: | a.out |
В книге на одной странице помещается K строк. Таким образом, на 1-й странице печатаются строки с 1-й по K-ю, на второй - с (K + 1)-й по (2 × K)-ю и т.д. Напишите программу, которая по номеру строки в тексте определяет номер страницы, на которой будет напечатана эта строка, и порядковый номер этой строки на странице.
№ | Входной файл (a.in ) |
Выходной файл (a.out ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | А. Жуплев | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Слон — шахматная фигура, которая может двигаться на любое число клеток по диагонали.
Имеется шахматная доска N на N клеток. В клетке с координатами (X; Y) находится слон. Требуется вывести шахматную доску с изображением слона и всех клеток, в которые он может походить.
Клетки чёрного цвета обозначаются символом '#' (ASCII 35), клетки белого цвета обозначаются символом '.' (точка, ASCII 46), клетка со слоном обозначается символом 'X' (ASCII 88), клетка, в которую может походить слон обозначается символом '*' (ASCII 42).
Ось ординат (OY) направлена вертикально вниз. Верхний левый угол доски имеет чёрный цвет и координаты (1; 1).
Входной файл содержит целые числа N X Y.
Выходной файл должен содержать N строчек из N символов каждая — изображение шахматной доски.
2 ≤ N ≤ 100
1 ≤ X, Y ≤ N
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | И. Блинов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Дано целое неотрицательное число x, требуется вернуть значение k-го бита числа x, то есть k-й разряд двоичного представления числа x. Разряды нумеруются с 0 начиная с младшего. Считается что число содержит неограниченное количество лидирующих нулей.
Первая строка входного файла содержит два числа x, k.
Входной файл должен содержать одно число — значение k-го бита числа x.
0 ≤ x ≤ 2 ⋅ 109
0 ≤ k ≤ 300
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Дано число N и массив из S целых чисел Ai.
За одну операцию можно заменять число N на любое из чисел N + Ai, N − Ai, N × Ai, N / Ai.
Второй операнд может быть любым элементом массива A.
Деление выполняется нацело, с округлением вниз.
Необходимо рассчитать минимальное количество операций, необходимых, чтобы получить из числа N число 0.
Первая строка входных данных содержит целое число N.
Вторая — целое число S.
Третья — S целых чисел, массив A.
Выходные данные должны содержать одно целое число — минимальное количество операций.
0 ≤ N, Ai ≤ 2 * 109
1 ≤ S ≤ 100
100 / 25 = 4 ; 4 - 4 = 0
100 / 11 = 9 ; 9 / 11 = 0
В обоих случаях затрачено 2 операции, что в данном примере является минимально возможным.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Ученые планируют провести важный эксперимент с использованием исследовательского модуля на планете X-2019. В процессе эксперимента будет проведено два измерения: основное и контрольное. Каждое измерение занимает ровно один час и должно начинаться спустя целое число часов после начала работы исследовательского модуля.
Данные эксперимента планируется немедленно передать на орбитальную станцию. Канал связи с орбитальной станцией будет установлен с l-го по r-й час от начала работы исследовательского модуля, включительно. Кроме того, согласно плану эксперимента между измерениями планета должна совершить целое число оборотов вокруг своей оси. Планета X-2019 осуществляет оборот вокруг своей оси за a часов.
Таким образом, если измерения осуществляются на i-м и j-м часу, то должно выполняться неравенство l ≤ i ≤ j ≤ r, а величина (j − i) должна быть кратна~a. Теперь учёным необходимо понять, сколько существует различных способов провести измерения.
Требуется написать программу, которая по заданным границам времени измерений l и r и периоду обращения планеты вокруг своей оси a определяет количество возможных способов провести измерения: количество пар целых чисел i и j, таких что l ≤ i ≤ j ≤ r, и величина (j − i) кратна a.
Входные данные содержат три целых числа, по одному на строке: l, r и a.
Выведите одно целое число: количество способов провести измерения.
1 ≤ l ≤ r ≤ 109, 1 ≤ a ≤ 109
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 30 | 1 ≤ l ≤ r ≤ 100, 1 ≤ a ≤ 100 | полная | |
2 | 30 | 1 ≤ l ≤ r ≤ 105, 1 ≤ a ≤ 105 | 1 | полная |
3 | 40 | 1 ≤ l ≤ r ≤ 109, 1 ≤ a ≤ 109 | 1, 2 | полная |
В первом примере можно провести измерения в следующие пары часов: (1, 3), (1, 5), (2, 4), (3, 5).
Во втором примере продолжительности работы канала связи недостаточно, чтобы провести два измерения.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 256 Мб |
Отряд под командованием лейтенанта О’Денила нашел странный текст, который состоит из n пар целых неотрицательных чисел a, b с одинаковым количеством разрядов. Лейтенант понял, что текст зашифрован и передал его в штаб.
В штабе дешифровщики поняли, что для расшифровки текста необходимо, чтобы пары были отсортированы следующим образом: первые числа a - по возрастанию, а вторые b - по убыванию в случаях, где первые числа соответствующих пар равны т.е. там, где
ai = aj, i ≠ j, i, j = 1,2,3,…,n
Помогите дешифровщикам получить зашифрованную последовательность, написав программу-дешифратор, сортирующие пары чисел указанным способом.
В первой строке подается единственное целое число n - количество пар чисел в последовательности.
В следующих n строках приводится n пар целых чисел a, b - перечень пар чисел для расшифровки.
Выведите n строк, в каждой из которых записана пара целых чисел a, b - искомую последовательность.
2 ≤ n ≤ 103
− 109 ≤ a, b ≤ 109
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | И. Лудов, А. Кленин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
В городе В случилась катастрофа: неожиданно наступила зима. Чтобы облегчить судьбу жителей В, из города М решено направить N самолётов с тёплой одеждой.
Самолёты имеют различную скорость, так что самолёт номер i затратит на полёт в точности ai минут. Разгрузка любого самолёта в аэропорту В занимает L минут, после чего аэропорт готов к приёму следующего самолёта.
Аэропорт города М большой, и способен оправлять любое необходимое количество самолётов одновременно. Аэропорт города В, напротив, может принимать и разгружать самолёты только по одному.
Самолёты могут взлетать в любом порядке, но не должны обгонять друг друга в воздухе, т. е. если самолёт 1 взлетел раньше самолёта 2, то и приземлиться он должен раньше.
Требуется определить минимальное время в минутах, требуемое на перелёт и разгрузку всех самолётов.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Восьмая всероссийская командная олимпиада школьников по программированию | Ограничение времени: | 2 сек | |
Входной файл: | shelter.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | shelter.out |
Штаб гражданской обороны Тридесятой области решил обновить план спасения на случай ядерной атаки. Известно, что все n селений Тридесятой области находятся вдоль одной прямой дороги. Вдоль дороги также расположены m бомбоубежищ, в которых жители селений могут укрыться на случай ядерной атаки.
Чтобы спасение в случае ядерной тревоги проходило как можно эффективнее, необходимо для каждого селения определить ближайшее к нему бомбоубежище.
Первая строка входного файла содержит число n — количество селений. Вторая строка содержит n различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до i-го селения.
Третья строка входного файла содержит число m — количество бомбоубежищ. Четвертая строка содержит m различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до i-го бомбоубежища.
Выведите в выходной файл n чисел — для каждого селения выведите номер ближайшего к нему бомбоубежища. Бомбоубежища пронумерованы от 1 до m в том порядке, в котором они заданы во входном файле.
1 ≤ n, m ≤ 100000
Все расстояния положительны и не превышают 109. Селение и убежище могут располагаться в одной точке.
№ | Входной файл (shelter.in ) |
Выходной файл (shelter.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 3 сек | |
Входной файл: | linear.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | linear.out |
Группа ученых работает в международной научной лаборатории, которая занимается исследованиями поведения элементарных частиц в установке для экспериментов "Большой линейный коллайдер" (БЛК). Установка БЛК представляет собой прямую, в некоторых точках которой размещаются частицы, которые могут перемещаться вдоль прямой.
В очередном эксперименте в БЛК размещаются n частиц, каждая из которых представляет собой либо отрицательно заряженную частицу — электрон e − , либо положительно заряженную частицу — позитрон e + . В эксперименте i-я частица исходно размещается в точке с координатой xi. После начала эксперимента в результате работы БЛК частицы начнут перемещаться в разные стороны вдоль прямой: e − частицы перемещаются по направлению уменьшения координаты, а e + частицы — по направлению увеличения координаты. Абсолютные величины скоростей всех частиц одинаковы и равны 1.
Если в процессе перемещения частицы e − и e + оказываются в одной точке, то они взаимодействуют и обе исчезают, при этом они не влияют на дальнейшее поведение остальных частиц.
Ученые выбрали m различных моментов времени t1, t2, ..., tm, для каждого из которых их интересует, какое количество частиц находится в БЛК непосредственно после каждого из этих моментов времени. Отсчет времени начинается с момента 0, когда частицы приходят в движение. Частицы, исчезнувшие в результате взаимодействия в момент времени tj, не должны учитываться при подсчете количества частиц для этого момента времени.
Требуется написать программу, которая по описанию исходного расположения и типов частиц, а также заданным моментам времени, определяет для каждого из моментов количество частиц, которое будет находиться в БЛК непосредственно после этого момента.
Первая строка входного файла содержит число n — количество частиц. Последующие n строк описывают частицы следующим образом: каждая строка содержит по два целых числа xi и vi — координату i-й частицы и ее тип соответственно (x1 < x2 < x3 < ... < xn). Частица e − описывается значением vi = − 1, а частица e + описывается значением vi = 1.
Следующая строка содержит целое число m — количество моментов времени, которые выбрали ученые. Последняя строка содержит m целых чисел: t1,t2,...,tm.
Для каждого момента времени во входном файле требуется вывести одно число: количество частиц в БЛК непосредственно после этого момента.
1 ≤ n, m ≤ 200000
− 109 ≤ xi, m ≤ 109
0 ≤ ti ≤ 109
vi равно − 1 или 1
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | |||
---|---|---|---|---|---|---|
n | xi | m | ti | |||
1 | 35 | 1 ≤ n ≤ 100 | − 100 ≤ xi ≤ 100 | m = 1 | 0 ≤ ti ≤ 100 | |
2 | 12 | 1 ≤ n ≤ 100 | − 109 ≤ xi ≤ 109 | m = 1 | 0 ≤ ti ≤ 109 | 1 |
3 | 12 | 1 ≤ n ≤ 200000 | − 109 ≤ xi ≤ 109 | m = 1 | 0 ≤ ti ≤ 109 | 1, 2 |
4 | 41 | 1 ≤ n ≤ 200000 | − 109 ≤ xi ≤ 109 | 1 ≤ m ≤ 200000 | 0 ≤ ti ≤ 109 | 1, 2, 3 |
По запросу сообщается результат окончательной проверки на каждом тесте.
В приведенном примере в начальный момент в БЛК находятся 4 частицы: частица e + в точке − 1, частица e − в точке 0, частица e + в точке 1 и частица e − в точке 5.
В момент времени 0.5 первая частица e + и первая частица e − сталкиваются в точке с координатой − 0.5 и исчезают. В момент времени 1 оставшиеся две частицы находятся в точках с координатами 2 и 4, соответственно. В момент времени 2 они сталкиваются в точке 3 и исчезают. Больше в БЛК частиц нет.
№ | Входной файл (linear.in ) |
Выходной файл (linear.out ) |
---|---|---|
1 |
|
|
Автор: | M. Sporyshev | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Юный программист Вася вернулся домой с летней стажировки в большой IT компании. В качестве сувенира он привез с собой ленточку с последовательностью из N натуральных чисел, вышитых на ней.
Вася равнодушен к числам, поэтому он хотел подарить ленточку кому-нибудь из друзей. Однако, у каждого из M друзей Васи есть ровно одно число, которое он очень не любит, и не захочет себе в подарок ленточку, на которой есть такое число. Все числа, которые не любят друзья Васи, различны.
Чтобы из ленточки все же получился подарок, Вася хочет разрезать ее в нескольких местах так, чтобы каждый полученный кусочек ленточки можно было бы подарить хотя бы одному своему другу (несколько кусочков можно отдать одному и тому же другу).
Напишите программу, которая определит минимальное число разрезов, которое придётся сделать Васе чтобы подарить все кусочки ленточки.
Первая строка входного файла содержит целое число N — количество чисел на ленточке.
Вторая строка входного файла содержит N целых чисел ai — последовательность чисел на ленточке.
Третья строка входного файла содержит целое число M — количество друзей Васи.
Четвертая строка входного файла содержит M целых чисел bi — нелюбимое число i-го друга. Все bi различны.
Выходной файл должен содержать единственное целое число — минимальное количество разрезов ленточки.
1 ≤ N ≤ 105
2 ≤ M ≤ 105
1 ≤ ai, bi ≤ 109
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 512 Мб |
Необходимо написать программу, которая группирует студентов по их группам.
В первой строке входного файла дано число n — количество студентов. Далее следует n строк, в каждой из которых записаны группа и имя студента.
Группа и имя студента разделены символом табуляции.
Выходной файл должен содержать список студентов, сгруппированный по группам. Для каждой группы необходимо вывести имя группы, а затем все имена студентов, которые принадлежат этой группе в алфавитном порядке, каждое в новой строке.
Сами группы следуют также в алфавитном порядке.
1 ≤ n ≤ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | power.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | power.out |
В физико-биологической лаборатории исследуют воздействие излучения на растения при облучении через силовые поля.
Экспериментальная установка содержит квадратную платформу размером 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 |
|
|
Автор: | Г. Гренкин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Дан массив целых чисел a1, a2, ..., aN и дано M команд типа "найти сумму чисел ai для i от l до r".
Требуется написать программу, выполняющую данные команды.
Входной файл содержит целое число N, за которым следуют N целых чисел ai.
Далее во входном файле содержится целое число M, за которым следуют M пар целых чисел lj rj.
Выходной файл должен содержать M целых чисел — результаты выполнения команд.
1 ≤ N ≤ 1000000
1 ≤ M ≤ 1000000
− 1000 ≤ ai ≤ 1000
1 ≤ lj ≤ rj ≤ N
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Рудник П. А. | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Мальчик Коля дошёл в своей любимой игре до финального босса.
С помощью игровой подсказки Коля узнал механику босса.
Необходимо узнать какой минимальный урон Коле нужно наносить по финальному боссу, чтоб его одолеть за M минут.
Входной файла содержит целые числа H M.
Выходной файл должен содержать единственное целое число — минимальный подходящий урон в минуту.
1 ≤ H ≤ 109; 1 ≤ M ≤ 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | forest.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | forest.out |
Фермер Николай нанял двух лесорубов: Дмитрия и Федора, чтобы вырубить лес, на месте которого должно быть кукурузное поле. В лесу растут X деревьев.
Дмитрий срубает по A деревьев в день, но каждый K-й день он отдыхает и не срубает ни одного дерева. Таким образом, Дмитрий отдыхает в K-й, 2K-й, 3K-й день, и т.д.
Федор срубает по B деревьев в день, но каждый M-й день он отдыхает и не срубает ни одного дерева. Таким образом, Федор отдыхает в M-й, 2M-й, 3M-й день, и т.д.
Лесорубы работают параллельно и, таким образом, в дни, когда никто из них не отдыхает, они срубают A + B деревьев, в дни, когда отдыхает только Федор — A деревьев, а в дни, когда отдыхает только Дмитрий — B деревьев. В дни, когда оба лесоруба отдыхают, ни одно дерево не срубается.
Фермер Николай хочет понять, за сколько дней лесорубы срубят все деревья, и он сможет засеять кукурузное поле.
Требуется написать программу, которая по заданным целым числам A, K, B, M и X определяет, за сколько дней все деревья в лесу будут вырублены.
В приведенном примере лесорубы вырубают 25 деревьев за 7 дней следующим образом:
Внимание! Тест из примера не подходит под ограничения для подзадач 2 и 3, но решение принимается на проверку только в том случае, если оно выводит правильный ответ на тесте из примера. Решение должно выводить правильный ответ на тест даже, если оно рассчитано на решение только каких-либо из подзадач 2 и 3.
1 ≤ X ≤ 1000, 1 ≤ A, B ≤ 1000, 2 ≤ K, M ≤ 1000.
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
1 ≤ X ≤ 1018; X < K; X < M.
При решении этой подзадачи можно считать, что лесорубы не отдыхают. Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
1 ≤ X ≤ 1018.
Дополнительно к приведенным ограничениям выполняется условие K = M. Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
1 ≤ X ≤ 1018, 1 ≤ A, B ≤ 109, 2 ≤ K, M ≤ 1018.
В этой подзадаче 16 тестов, каждый тест оценивается в 3 балла. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте.
Входной файл содержит пять целых чисел, разделенных пробелами: A, K, B, M и X.
Выходной файл должен содержать одно целое число — искомое количество дней.
1 ≤ A, B ≤ 109, 2 ≤ K, M ≤ 1018, 1 ≤ X ≤ 1018
№ | Входной файл (forest.in ) |
Выходной файл (forest.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 2 сек | |
Входной файл: | diploma.in | Ограничение памяти: | 64 Мб | |
Выходной файл: | diploma.out |
Когда Петя учился в школе, он часто участвовал в олимпиадах по информатике, математике и физике. Так как он был достаточно способным мальчиком и усердно учился, то на многих из этих олимпиад он получал дипломы. К окончанию школы у него накопилось N дипломов, причем, как оказалось, все они имели одинаковые размеры: W — в ширину и H — в высоту.
Сейчас Петя учится в одном из лучших российских университетов и живет в общежитии со своими одногруппниками. Он решил украсить свою комнату, повесив на одну из стен свои дипломы за школьные олимпиады. Так как к бетонной стене прикрепить дипломы достаточно трудно, то он решил купить специальную доску из пробкового дерева, чтобы прикрепить ее к стене, а к ней — дипломы. Для того чтобы эта конструкция выглядела более красиво, Петя хочет, чтобы доска была квадратной и занимала как можно меньше места на стене. Каждый диплом должен быть размещен строго в прямоугольнике размером W на H. Прямоугольники, соответствующие различным дипломам, не должны иметь общих внутренних точек.
Требуется написать программу, которая вычислит минимальный размер стороны доски, которая потребуется Пете для размещения всех своих дипломов.
Решения, правильно работающие только при W, H, N ≤ 1000, будут оцениваться в 40 баллов.
Входной файл содержит три целых числа: W, H, N
В выходной файл необходимо вывести ответ на поставленную задачу.
1 ≤ W, H, N ≤ 109
№ | Входной файл (diploma.in ) |
Выходной файл (diploma.out ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 256 Мб |
Дан массив из N элементов, нужно научиться находить сумму чисел на отрезке.
Первая строка содержит два целых числа N и K — число чисел в массиве и количество запросов. (1 ≤ N ≤ 100 000), (0 ≤ K ≤ 100 000). Следующие K строк содержат запросы
A i x
— присвоить i-му элементу массива значение x (1 ≤ i ≤ n, 0 ≤ x ≤ 109)Q l r
— найти сумму чисел в массиве на позициях от l до r. (1 ≤ l ≤ r ≤ n)
На каждый запрос вида Q l r
нужно вывести единственное число — сумму на отрезке.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Иван Кобец | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Сегодня в ДВФУ состоится традиционное вручение дипломов выпускникам института математики и компьютерных наук. Каждый год это особенное событие и большой праздник, как для выпускников, так и для сотрудников факультета, своеобразное подведение итогов совместного многолетнего труда.
В этом году из института выпускается n студентов. Еще давным-давно, при поступлении, каждому студенты был выдан порядковый номер, который зависел от их места в конкурсном списке по результатам вступительных испытаний. Те, кто были выше в конкурсном списке, имели более низкий порядковый номер. То есть, если человек сдал вступительные лучше всех, то имел 1-й порядковый номер, кто сдал чуть хуже этого человека, но лучше всех остальных — 2-й, и так далее. Хоть это и было очень давно, эти номера закрепились за ними до конца их учебных дней.
В качестве введения новшества, институт решил распечатать конверты с этими порядковыми номерами и запаковать дипломы выпускников в принадлежащие их номеру конверты. Они сложили все конверты в стеклянный "бокс", расположив их слева направо по возрастанию. Бокс имел два отверстия для того, чтобы доставать дипломы: слева и справа.
Во время начала церемонии декану вручили список, по которому он должен выдавать дипломы. i-й по счету диплом должен быть выдан студенту под порядковым номером ai. Так как укладывали все дипломы до получения этого списка, расположение их не такое, как должно быть. Они решили действовать по следующей тактике: вытаскивать дипломы по-очереди до того момента, пока не достанут нужный, и складывать все выложенные дипломы в том же порядке, как они и лежали. Т.е. если нужно достать диплом под номером 4, то сначала необходимо выложить дипломы 6 и 5 (или 1, 2 и 3, так как бокс имеет отверстия с двух сторон), а затем сложить их обратно в том же порядке. После того, как диплом выдан, он пропадает из бокса. На каждую операцию взятия и складывания дипломом затрачивается одно действие. Такая тактика, кстати, выбрана не просто так, они хотят ускорить выдачу дипломов и при этом не запутаться.
Вам дан список порядка выдачи дипломов. Определите, за какое наименьшее количество действий возможно выдать все дипломы, следуя данной тактике.
В первой строке входных данных записано натуральное число n — количество студентов.
Во второй строке записано n натуральных чисел ai — порядок выдачи дипломов студентам по их порядковым номерам. Гарантируется, что каждое ai уникальное.
Выведите минимально возможное количество действий, за которое можно выдать все дипломы, следуя данной тактике.
1 ≤ n ≤ 2 ⋅ 105
1 ≤ ai ≤ n
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
Входной файл: | rmq.in | Ограничение времени: | 2 сек | |
Выходной файл: | rmq.out | Ограничение памяти: | 256 Мб |
Первая строка содержит два целых числа n и q (1 ≤ n, q ≤ 105) — длина массива и число запросов соответственно.
Вторая строка содержит n целых чисел a1, …, an (|ai| ≤ 105), задающих соответствующие значения массива.
Следующие q строк содержат запросы.
В зависимости от типа запрос может иметь вид либо «max l r», либо «add l r v».
1 ≤ l ≤ r ≤ n, |v| ≤ 105.
Для каждого запроса вида «max l r» требуется в отдельной строке выдать значение соответствующего максимума.
№ | Входной файл (rmq.in ) |
Выходной файл (rmq.out ) |
---|---|---|
1 |
|
|
Входной файл: | sum.in | Ограничение времени: | 2 сек | |
Выходной файл: | sum.out | Ограничение памяти: | 256 Мб |
Первая строка входного файла содержит два целых числа N и K — число чисел в массиве и количество запросов. (1 ≤ N ≤ 100 000), (0 ≤ K ≤ 100 000). Следующие K строк содержат запросы:
A l r x— присвоить элементам массива с позициями от l до r значение x (1 ≤ l ≤ r ≤ N, 0 ≤ x ≤ 109)
Q l r— найти сумму чисел в массиве на позициях от l до r. (1 ≤ l ≤ r ≤ N)
Изначально массив заполнен нулями.
На каждый запрос вида
Q l rнужно вывести единственное число — сумму на отрезке.
№ | Входной файл (sum.in ) |
Выходной файл (sum.out ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Друзья готовятся встретить национальную команду, возвращающуюся с международной олимпиады по информатике. Для этого они подготовили множество красочных плакатов. Осталось только продумать детали поздравления.
Для того, чтобы приветствовать команду, n друзей встанут в круг. Пронумеруем их от 1 до n в порядке их расположения по кругу. Таким образом, для всех i от 1 до n − 1 друзья с номерами i и i + 1 стоят рядом, также рядом стоят друзья с номерами n и 1. У каждого из друзей есть плакат. Каждый плакат характеризуется своей красочностью — целым неотрицательным числом. Плакат у друга с номером i имеет красочность ai.
Когда поздравление начнётся, некоторые из друзей поднимут свои плакаты и будут показывать их команде. Для того, чтобы члены команды не растерялись и смогли рассмотреть все плакаты, не должно быть четырёх или более стоящих подряд друзей с поднятым плакатом.
Друзья планируют изменять плакаты в процессе встречи. Всего будет внесено q изменений в плакаты. После i-го из них плакат друга с номером pi будет иметь красочность vi. После каждого из изменений друзья хотят определить, какую максимальную суммарную красочность могут иметь поднятые плакаты, если нельзя нарушать установленное ограничение.
Требуется написать программу, которая по заданной начальной красочности плакатов и последовательности их изменений определяет в начале, а также после каждого изменения, какой максимальной суммарной красочности поднятых плакатов можно добиться, не нарушая условие, что поднято не более трёх плакатов подряд.
Первая строка ввода содержит целое число n (4 ≤ n ≤ 40 000) — количество друзей.
Вторая строка содержит n целых чисел ai (0 ≤ ai ≤ 109) — исходные значения красочности плакатов у друзей.
Третья строка содержит одно целое число q (0 ≤ q ≤ 40 000) — количество изменений плакатов, которые вносили друзья.
Каждая из следующих q строк содержит два целых числа pi и vi (1 ≤ pi ≤ n; 0 ≤ vi ≤ 109) — номер друга, плакат которого изменился, и новая красочность этого плаката.
Выведите q + 1 число. Перед первым изменением, а также после каждого изменения плакатов выведите одно целое число — максимальное суммарное значение красочности поднятых плакатов, если нельзя поднимать больше трёх плакатов подряд.
4 ≤ n ≤ 40 000
0 ≤ ai ≤ 109
0 ≤ q ≤ 40 000
1 ≤ pi ≤ n; 0 ≤ vi ≤ 109
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 11 | n ≤ 10, q = 0 | первая ошибка | |
2 | 12 | n ≤ 10, q ≤ 10 | 1 | первая ошибка |
3 | 13 | n ≤ 1 000, q ≤ 1 000 | 1,2 | первая ошибка |
4 | 17 | n ≤ 40 000, q = 0 | 1 | первая ошибка |
5 | 47 | n ≤ 40 000, q ≤ 40 000 | 1,2,3,4 | первая ошибка |
Перед первым изменением плакаты следует поднять друзьям с номерами 2, 4, 5, 6. Суммарная красочность поднятых плакатов будет равняться 17.
После первого изменения плакат друга с номером 6 имеет красочность 0. Теперь плакаты следует поднять друзьям с номерами 1, 3, 4, 5. Суммарная красочность будет равняться 13.
После второго изменения плакат друга с номером 2 имеет красочность 5. Плакаты следует поднять друзьям с номерами 1, 2, 4, 5. Суммарная красочность будет равняться 15.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | А. Кленин, И. Туфанов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Оргкомитет сборов по программированию знает, что важно организовать правильное питание участников. Еда должна быть вкусной, а блюда — разнообразными. Поэтому разработку меню доверили повару тёте Вале.
Тётя Валя умеет готовить несколько разных блюд. Она использует для их обозначения маленькие английские буквы. Всего в течение сборов будет n приёмов пищи. Тётя Валя составила черновик меню — строку s, состоящую из n маленьких английских букв. Символ si обозначает блюдо, которое она запланировала для i-го приёма пищи.
Черновик меню полностью сбалансирован по всем питательным компонентам, но тётя Валя не особо заботилась о разнообразии.
Помогите тёте Вале сделать меню наиболее разнообразным. Для этого нужно переставить блюда в меню таким образом, чтобы минимальное расстояние между одинаковыми блюдами было как можно больше.
Если существует несколько решений, выведите любое из них.
Входной файл содержит строку s, состоящую из маленьких букв английского алфавита — черновик меню.
Выходной файл должен содержать единственную строку — окончательный вариант меню.
1 ≤ n ≤ 100000;
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | А. Жуплев | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Прожив 1000 лет, Гассан Абдуррахман ибн Хоттаб узнал, что из интернета можно скачивать файлы. Решив помочь другим пользователям, он сотворил собственный сервер с файлами. Поскольку сервер Хоттаба волшебный, любой файл скачивается с него мгновенно. Однако, после скачивания файла размером S мегабайт скачавший его компьютер отключается от сервера на S секунд.
В распоряжении шушанчиков имеется один компьютер, подключённый к интернету. Им требуется скачать N файлов, i-й файл размером si мегабайт. Шушанчики просят Вас рассчитать минимальное время, за которое можно скачать эти файлы с сервера Хоттабыча.
Во входном файле содержится число N — количество файлов, за которым следуют N чисел si — размеры файлов в мегабайтах.
В выходном файле должно содержаться единственное число — минимальное время скачивания всех файлов в секундах.
1 ≤ N ≤ 1000
1 ≤ si ≤ 1000
Все числа во входном файле целые
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | text.in | Ограничение времени: | 2 сек | |
Выходной файл: | text.out | Ограничение памяти: | 256 Мб |
Давным-давно, в далекой-далекой галактике учились в одной школе два закадычных друга — Вася и Петя. Они были верными товарищами, не раз выручавшими друг друга в трудную минуту из самых безвыходных ситуаций. Однако речь сейчас пойдет не об этом, а о редчайшем случае — ссоре между двумя героями нашего повествования.
В конце седьмого класса Вася увлекся программированием и написал свой текстовый редактор. Естественно, Петя тут же захотел его испытать. Несложно представить насколько велико было его разочарование, когда обнаружилось, что Васина программа корректно работает только при использовании экрана с тем же разрешением, как и у него дома. Вася оправдывал это тем, что оптимальный вывод текста на экран — штука сложная, поэтому универсальным образом сделать это невозможно. Петя же заявил, что хоть программист он и никудышный, но легко решит эту задачу.
К сожалению, программирует Петя действительно из рук вон плохо, поэтому он просит вас помочь ему в написании решения.
На вход дан текст. Назовем словом последовательность символов, ограниченную пробелами, началом или концом текста. Обратите внимание, что в данной задаче знаки препинания считаются частью слова. Требуется разбить текст на строки так, чтобы длина каждой из них была не более k символов, при этом их общее количество было минимальным. Порядок слов и сами слова менять запрещено.
Первая строка входного файла содержит натуральное число k — максимально допустимая длина строки.
Вторая строка входного файла содержит текст, который необходимо вывести. Текст состоит из латинских букв, цифр, пробелов и символов "," (запятая), "." (точка), "!" (восклицательный знак) и "?" (вопросительный знак).
Выведите заданный во входном файле текст так, чтобы длина каждой строки была не более k символов, а количество строк было минимально возможным. Гарантируется, что задача имеет решение. В случае если решение не единственно, выведите любое из них. Слова в выходном файле должны быть отделены друг от друга пробелами и/или переводами строк.
1 ≤ k ≤ 100. Размер входного файла не превышает 50000 байтов.
№ | Входной файл (text.in ) |
Выходной файл (text.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Петя очень любит арифметические прогрессии. Однажды он написал на бумаге числовую последовательность, но, к сожалению, эта последовательность не оказалась арифметической прогрессией.
Чтобы исправить эту ситуацию, Петя решил вычеркнуть некоторые числа, чтобы полученная в результате вычёркивания последовательность оказалась арифметической прогрессией. При этом Петя хочет вычеркнуть как можно меньше чисел.
Напишите программу, принимающую на вход последовательность чисел и вычисляющую, какое наименьшее количество чисел нужно из неё вычеркнуть, чтобы оставшаяся последовательность оказалась арифметической прогрессией.
Входной файл содержит целое число N — количество чисел, за которым следуют N целых чисел ai.
Выходной файл должен содержать целое число M — количество чисел, которые останутся после вычёркивания (при этом количество вычеркнутых чисел должно быть минимальным).
Далее должны следовать M целых чисел — номера чисел, которые останутся после вычёркивания, перечисленные в порядке возрастания.
Если решений несколько, выведите любое из них.
1 ≤ N ≤ 100
1 ≤ ai ≤ 106
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Кленин А. С. | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Две пчелы собирают пыльцу с N цветков, расположенных в ряд. Цветок номер i содержит ai микрограмм пыльцы.
Пчёлы договорились, что первая пчела будет собирать пыльцу с цветков на участке от L до M включительно, а вторая — от M + 1 до R включительно (L ≤ M < R). Чтобы ни одной из пчёл не было обидно, сумма запасов пыльцы на первом и втором участках пчёл должны совпадать.
Требуется написать программу, которая найдёт подходящие участки с наибольшим возможным количеством пыльцы.
Входные данные содержат целое число N, за которым следует N чисел ai.
Выходные данные должны содержать целые числа L M R — границы участков. Если оптимальных решений несколько, выведите решение с наименьшим значением L. Если решения не существует, выведите единственное число − 1.
2 ≤ N ≤ 10000
1 ≤ ai ≤ 105
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Две подруги, Нина и Марина, живут квартирах n и m в одном подъезде самого длинного дома в мире. Каким может быть наибольший номер этого подъезда? Количество квартир в каждом подъезде одинаково.
Две строки входных данных содержит два натуральных числа n и m.
Выведите одно натуральное число — ответ на вопрос задачи.
1 ≤ m < n ≤ 109
В примере дано n = 52 и m = 41. Эти квартиры могут находиться в первом подъезде (если в одном подъезде квартир не меньше, чем 52).
Эти квартиры могут находиться во втором подъезде (если в одном подъезде квартир не меньше, чем 26 и не больше, чем 40).
Эти квартиры могут находиться в третьем подъезде (если в одном подъезде квартир не меньше, чем 18 и не больше, чем 20).
Эти квартиры могут находиться в четвертом подъезде (если в одном подъезде ровно 13 квартир).
Эти квартиры не могут находиться в подъезде с номером большим, чем 4. Ответ на вопрос задачи — 4.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | A. Klenin | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Юный физик Маша изучает лазеры. Маша хочет построить простой двумерный волновод, состоящий из двух очень длинных параллельных зеркал. Первое зеркало совпадает с осью Ox, а второе зеркало расположено на расстоянии h от первого.
Маша расположила лазер в точке с координатами (0,y) и направила лазерный луч в направлении (1, − 1). Маша хочет подобрать расстояние между зеркалами h так, чтобы луч прошёл через точку с координатами (xt,yt). Сам лазер при этом должен находиться внутри волновода, то есть h ≥ y. Лазерный луч всегда отражается от зеркал под углом в 45 градусов.
Входной файл содержит три целых числа: y, xt, yt — координаты лазера и цели.
Программа должна вывести единственное целое число — значение h, при котором лазерный луч пройдёт через цель. Если есть несколько решений, выведите минимальное возможное значение h. Если решений нет, выведите одно число − 1.
1 ≤ y, xt, yt ≤ 109
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Никита Иоффе (Жюри XXI командной олимпиады школьников Санкт-Петербурга по информатике и программированию) | Ограничение времени: | 2 сек | |
Входной файл: | equation.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | equation.out |
Маленький Вася очень любит уравнения. Однажды ему на глаза попалось уравнение x + y + xy = n. Вася захотел узнать количество пар целых неотрицательных чисел x и y, которые являются решениями этого уравнения.
Так как Вася еще маленький, то он попросил вас посчитать это количество.
В единственной строке входного файла дано число n (0 ≤ n ≤ 109).
В единственную строку выходного файла выведите ответ на задачу.
№ | Входной файл (equation.in ) |
Выходной файл (equation.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Гусаров В.Е. | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 512 Мб | |
Выходной файл: | output.txt |
Игорь изучал арифметическую прогрессию и чтобы лучше запомнить как она выглядит, распечатал на листочках бумаги числа и разложил из них на полу арифметическую прогрессию. Поднялся ветер и все листы бумаги улетели в разные стороны. Когда Игорь собрал их, оказалось, что не хватает одного листа и выразить из них арифметическую прогрессию не получается. Необходимо найти число, которые было написано на пропавшем листе.
Гарантируется, что пропавшее целое число не было первым или последним в арифметической прогрессии Игоря.
В первой строке входные данные содержат число N - количество листков с числами, которое собрал Игорь.
В следующей строке содержатся N чисел ai разделенные пробелами
Выходные данные должны содержать одно целое число.
2 ≤ N ≤ 106
0 ≤ ai ≤ 107
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Имеется набор из N рациональных дробей, каждая из которых задается своим числителем Ai и знаменателем Bi.
Требуется написать программу, которая выводит:
Входные данные содержит целое число N, за которым следует набор из N пар целых чисел (Ai, Bi).
Выходные данные должны содержать единственное число — ответ задачи.
1 ≤ N ≤ 200, 1 ≤ (Ai, Bi) < 232
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
С целью поиска закономерностей иногда полезно сгенерировать длинную последовательность по определенным правилам. Известно, например, что последовательность 0, 0 + 1, 0 + 1 + 3, 0 + 1 + 3 + 5, …, 0 + 1 + 3 + … + (2n − 1), …, составленная из сумм нескольких первых нечетных натуральных чисел, состоит из квадратов целых чисел: 0, 1, 4, 9, …, n2,….
Обобщим эту последовательность следующим образом: будем использовать вместо начального значения не ноль, а число k. Получим последовательность: k, k + 1, k + 1 + 3, k + 1 + 3 + 5, …, k + 1 + 3 + … + (2n − 1), …. В отличие от случая k = 0, в этой последовательности могут встречаться не только полные квадраты. Необходимо найти минимальное целое неотрицательное число, квадрат которого встречается в этой последовательности.
Требуется написать программу, которая по заданному целому числу k определяет, квадрат какого минимального неотрицательного целого числа встречается в описанной последовательности, либо выясняет, что в ней вообще не встречается полных квадратов.
В единственной строке содержится целое число k — начальное число в последовательности. Обратите внимание, что для считывания и хранения такого большого числа необходимо использовать 64-битный тип данных.
Выведите минимальное неотрицательное целое число, квадрат которого встречается в описанной последовательности. Если в последовательности не встречается квадратов целых чисел, выведите none.
− 1012 ≤ k ≤ 1012
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 7 | 1 ≤ k ≤ 1000 | полная | |
2 | 10 | 1 ≤ k ≤ 105 | 1 | первая ошибка |
3 | 27 | 1 ≤ k ≤ 1012 | 1, 2 | первая ошибка |
4 | 7 | − 1000 ≤ k ≤ 1000 | 1 | полная |
5 | 10 | − 105 ≤ k ≤ 105 | 1, 2, 4 | первая ошибка |
6 | 39 | − 1012 ≤ k ≤ 1012 | 1, 2, 3, 4, 5 | первая ошибка |
В первом примере каждое число последовательности является полным квадратом. Минимальный из них — 0, 02 = 0.
Во втором примере последовательность начинается так: − 5, − 4, − 1, 4, 11, 20,…. Минимальное неотрицательное целое число, квадрат которого встречается в последовательности — 2, 22 = 4.
В третьем примере последовательность начинается так: 2, 3, 6, 11, 18, …. В ней нет квадратов целых чисел.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
В магазине "Программист-спортсмен" большая распродажа! В преддверии поступления товаров нового сезона, нужно срочно освободить полки и витрины, продавая прошлогодние коллекции по бросовым ценам. К сожалению, установить произвольную цену на товар нельзя, в соответствии с антимонопольным законом на распродажу распространяются следующие условия:
1) На товар можно установить любую скидку (от 1 до 99 процентов) по сравнению с ценой товара в предыдущий день.
2) И скидка, и новая стоимость товара должны являться натуральными числами.
Например, если товар стоит 20 рублей, на него можно установить скидку 25% и на следующий день этот товар будет продаваться по 15 рублей. А вот скидку в 30% установить нельзя — новая цена будет выражаться дробным числом рублей.
Молодой программист Тимофей каждый день после работы заходит в магазин и скупает все товары, которые сегодня стоят 1 рубль. Как скоро хозяину магазина удастся снизить стоимость товара с n рублей до 1 рубля?
Единственная строка входных данных содержит натуральное число n — начальная стоимость товара в рублях. Гарантируется, что это значение таково, что существует последовательность корректных скидок, снижающих стоимость товара до 1 рубля.
Выведите одно натуральное число — наименьшее количество дней, необходимых для максимального снижения стоимости товара.
2 ≤ n ≤ 1018
В примере дана начальная стоимость товара 125 рублей. В первый день на него устанавливается скидка 96% и товар продается по цене 5 рублей. Во второй день скидка составит 80% и вечером товар будет куплен Тимофеем за 1 рубль.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Найдите наименьшее положительное целое число, которое делится на n и начинается с цифр 2021 в десятичной записи.
Входные данные содержат единственное целое число n — делитель искомого числа.
Выведите одно натуральное число — ответ на задачу.
1 ≤ n ≤ 1012
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Требуется подсчитать общее количество пар целых чисел (p, n) таких, что p ≥ 1, n > 1 и A ≤ pn ≤ B.
Входной файл содержит два натуральных числа: A и B.
Выходной файл должен содержать единственное целое число — количество пар.
2 ≤ A ≤ B < 263
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Однажды Марфа Геннадьевна пришла в столовую. В меню было N блюд. Блюдо с номером i стоит ci рублей. Для каждого блюда известен также коэффициент сытости блюда — ai.
Марфа Геннадьевна знает, что для того, чтобы наесться, нужно, чтобы сумма коэффициентов сытости съеденных блюд была не меньше A.
Какие блюда нужно взять в столовой, чтобы наесться и потратить как можно меньше денег? Обратите внимание, что Марфа Геннадьевна может взять более одной порции блюда (любое целое неотрицательное число порций).
Входной файл содержит целые числа N A.
Далее следуют N пар целых чисел ci ai.
Выходной файл должен содержать минимальную сумму денег, которую нужно потратить, чтобы наесться.
1 ≤ N ≤ 100
1 ≤ A ≤ 1000
1 ≤ ci ≤ 500
1 ≤ ai ≤ 100
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Author: | A. Klenin | Time limit: | 3 sec | |
Input file: | input.txt | Memory limit: | 256 Mb | |
Output file: | output.txt |
The main hall of the Nearsea Institute of Unspecified Underwater Studies has a shape of a long corridor. Along the corridor, there are N aquariums exhibiting various sea creatures. Aquariums are located at distances x1, …, xN from the hall entrance (xi < xi + 1).
The institute has recently got a new director, who decided that the aquarium maintenance is too costly, and issued an order to remove M (0 ≤ M ≤ N − 2) aquariums.
To minimize the disruption to the looks of the hall, it was decided that:
Your program must select aquariums for removal in such a way that the above conditions are satisfied.
Input file contains integers N M followed by N integers xi.
Output file should contain a single integer — the smallest possible maximum distance.
No. | Input file (input.txt ) |
Output file (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Н. Ведерников, И. Блинов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Илон Маск закончил создание транспорта будущего — Hyperloop. Hyperloop — расположенный на опорах надземный трубопровод, внутри которого с высокой скоростью в одном направлении перемещаются одиночные транспортные капсулы. Пассажирский вариант предполагает n рядов по одному сиденью. Однако из-за конструктивных недостатков люди не могут сидеть на двух подряд идущих рядах. Поэтому, когда продаётся билет с номером места ai из продажи исчезает сам этот билет, и два соседних с ним билета.
Слон Пахом подрабатывает контролёром на Hyperloop. На рейс уже распродано k билетов с номерами ai. Так как все хотят прокатиться на Hyperloop, вы точно знаете, что все билеты будут распроданы. После продажи k билетов вам стало интересно, сколько существует различных способов продажи оставшихся билетов так, чтобы не нарушить правила продажи билетов. Способы считаются различными, если в одном из них существует хотя бы один билет, не проданный в другом.
Первая строка входного файла содержит два целых числа N и K. Далее следует K строк содержащих по одному числу ai. Гарантируется, что для всех пар i и j выполняется условие |ai − aj| ≥ 2 .
Выходной файл должен содержать одно — количество вариантов рассадки пассажиров по модулю 1000000007.
1 ≤ N ≤ 106; 1 ≤ K ≤ 105; 1 ≤ ai ≤ N
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | ||
---|---|---|---|---|
N | K | |||
1 | 15 | 1 ≤ N ≤ 105, N - чётное | K = N / 2 | |
2 | 35 | 1 ≤ N ≤ 20 | 1 ≤ K ≤ 10 | |
3 | 50 | 1 ≤ N ≤ 106 | 1 ≤ K ≤ 105 |
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Антон Карабанов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 64 Мб | |
Выходной файл: | Стандартный выход |
Король и королева пригласили на пир n рыцарей. Пиршество затянулось допоздна и хозяева изрядно устали. К сожалению, гости не расходятся, пока не услышат от короля с королевой хвалебную речь. У короля есть любимое число k, поэтому он может произнести речь и восславить одного или сразу k рыцарей (естественно, при этом за столом должно сидеть не менее k рыцарей). Сразу после этого один или k рыцарей покидают замок. У королевы тоже есть своё любимое число q, поэтому она может произнести речь и восславить одного или сразу q рыцарей. Сразу после этого один или q рыцарей покидают замок.
Король с королевой решили устроить игру — тот, кто выставит из замка последнего рыцаря — выигрывает и получает право выбрать для культурной программы следующего праздника свою любимую труппу бродячих артистов. Кто выигрывает при безошибочной игре обоих игроков — король, делающий первый ход, или королева, делающая второй ход? Естественно, игроки ходят по очереди.
Единственная строка входного файла содержит три натуральных числа, записанных через пробел: n, k и q — количество рыцарей на королевском пиру, а также любимые числа короля и королевы.
Выведите титул победителя — "King" или "Queen" (без кавычек).
1 ≤ k, q, n ≤ 105
Баллы за каждый тест начисляются независимо.
Решения, верно работающие при k = q, получат не менее 20 баллов.
На пиру 13 рыцарей. Любимое число короля — 6, королевы — 4. Первым ходом король хвалит 6 рыцарей. После любых ответных ходов королевы ему нужно хвалить по одному рыцарю. Если же король первым ходом восславит одного рыцаря, то он проиграет.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 1 сек | |
Входной файл: | tiling.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | tiling.out |
В процессе ремонта в Лаборатории Информационных Технологий строителям необходимо заменить поврежденные напольные плитки в коридоре лаборатории, который имеет размер 2 × n метров. В распоряжении строителей есть неограниченный запас плиток двух размеров: 1 × 2 метра и 1 × 1 метр. При этом плитки размером 1 × 2 метра перед укладкой разрешается поворачивать на 90 градусов и размещать как вдоль, так и поперек коридора.
Строители уже начали ремонт и уложили в некоторых местах пола коридора k плиток размером 1 × 1. Для завершения ремонта прорабу необходимо подготовить план дальнейших работ. Для этого ему надо решить, каким образом уложить плитки на места, где они еще не уложены. Это можно сделать различными способами и прораб хочет перебрать все варианты и выбрать самый удачный. Перед тем как это сделать, прораб хочет знать, какое количество вариантов ему придется рассмотреть. Это число требуется найти по модулю 109 + 7.
Требуется написать программу, которая по заданной длине коридора n и расположению плиток, которые уже уложены, определяет количество способов укладки плиток на оставшиеся места. Ответ необходимо вывести по модулю 109 + 7.
Рисунок 1. Все способы укладки плиток в первом примере
Рисунок 2. Все способы укладки плиток в третьем примере. Уже уложенная плитка отмечена серым цветом.
1 ≤ n ≤ 8, k = 0
Баллы за подзадачу начисляются только в случае, если все тесты подзадачи пройдены.
1 ≤ n ≤ 1000, k = 0
Баллы за подзадачу начисляются только в случае, если все тесты подзадачи пройдены.
1 ≤ n ≤ 100000, k = 0
Баллы за подзадачу начисляются только в случае, если все тесты подзадачи пройдены.
1 ≤ n ≤ 100000, 1 ≤ k ≤ 2n
В этой подзадаче 20 тестов, каждый тест оценивается в 2 балла. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте.
Первая строка входного файла содержит два целых числа: n — длину коридора и k — количество уже уложенных единичных плиток.
Последующие k строк содержат по два целых числа xi и yi, которые задают позиции уже уложенных единичных плиток, i-я плитка уложена на xi-м метре коридора в yi-м ряду.
Выходной файл должен содержать одно целое число — количество способов укладки плиток в коридоре, взятое по модулю 109 + 7.
1 ≤ n ≤ 100000; 0 ≤ k ≤ 2n; 1 ≤ xi ≤ n; 1 ≤ yi ≤ 2.
№ | Входной файл (tiling.in ) |
Выходной файл (tiling.out ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 256 Мб |
Дан неориентированный граф. Проверьте, является ли он деревом.
В первой строке входного файла заданы через пробел два целых числа n и m — количество вершин и рёбер в графе, соответственно. В следующих m строках заданы рёбра; i-я из этих строк содержит два целых числа ui и vi через пробел — номера концов i-го ребра. Граф не содержит петель и кратных рёбер.
В первой строке выходного файла выведите YES
, если граф является
деревом, и NO
в противном случае.
1 ≤ n ≤ 105
0 ≤ m ≤ 105
1 ≤ ui, vi ≤ n
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 64 Мб |
Дан квадратный лабиринт, размером N × N, координаты точки входа и точки выхода. Определите минимальное расстояние от входа до выхода.
В выходном файле должно содержаться единственное число — минимальное расстояние. Лабиринт проходим.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | И. Олейников | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Отдел инновационных технологий фирмы "Division Computers" решил, что повысить производительность в написании программ можно, если использовать модульное программирование, т.е. когда когда каждый программист пишет свою часть отдельно.
Когда все программисты сдали в отдел свою работу, выяснилось, что некоторым модулям для правильного функционирования требуются другие модули, при этом если i-тому модулю нужен j-тый, то и наоборот j-тому модулю нужен i-тый. Вам, как одному из программистов отдела, поручено написать программу, которая по сведениям о связях между модулями определила бы, сколько минимальных программ можно из них собрать. Минимальной считается программа, которую нельзя разделить на более мелкие части.
Входной файл содержит числа N и M — соответственно число модулей и связей между ними, за которыми следуют M пар чисел ai aj, означающие, что i-тый и j-тый модули не могут функционировать друг без друга.
Выходной файл должен содержать число получившихся после сборки программ.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | И. Туфанов | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Школьник Петя собрал собственный цветной дисплей с разрешением 2 пикселя по вертикали и N пикселей по горизонтали. Каждый пиксель определяется координатами (a, b), где a — номер строки от 1 до 2, а b — номер столбца от 1 до N.
На дисплее с таким разрешением уже можно играть и Петя разрабатывает одну из игр — "Бег по коридору". По правилам игры, каждый пиксель может быть либо свободен, либо занят препятствием, либо занят игроком, либо занят эликсиром. Игрок может перемещаться в один из смежных пикселей, не занятых препятствием (смежными называются пиксели, соседствующие либо в строке, либо в столбце).
В начале у игрока нулевой уровень усталости. Каждое перемещение добавляет к текущему уровню усталости единицу. Как только игрок перемещается на пиксель, занятый эликсиром, он выпивает эликсир, и уровень усталости уменьшается на единицу. Таким образом, перемещение на пиксель с эликсиром не увеличивает уровня усталости. Когда игрок покидает клетку, на которой был эликсир, она становится свободной.
Изначально игрок находится в пикселе с координатами (1, 1). Цель игры — добраться до N-ого столбца, минимизировав конечный уровень усталости.
Вам необходимо написать программу, которая по заданному плану коридора определит минимальный уровень усталости, с которым можно пройти игру.
В первой строке входного файла содержится число N — горизонтальное разрешение дисплея. Далее следует описание игрового поля — пара строк длиной N каждая. Символ "." (точка) соответствует свободному пикселю, символ "#" (решетка) — занятому препятствием, символ "X" (прописная латинская X) — пикселю с эликсиром.
Гарантируется, что первый символ первой строки равен ".", кроме того, последний символ хотя бы одной из двух строк не равен "#".
Гарантируется, что можно добраться до N-ого столбца.
В выходной файл выведите единственное число — минимальный уровень усталости, которого можно достичь, пройдя игру.
2 ≤ N ≤ 100
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 256 Мб |
В заданном корневом дереве найдите вершины, максимально удалённые от корня. Расстоянием между вершинами считается количество рёбер в пути.
В первой строке задано n "--- количество вершин в дереве. В следующих n − 1 строках заданы вершины, являющиеся предками вершин 2, 3, …, n. Вершина 1 является корнем дерева.
В первой строке выведите максимальное расстояние от корня до остальных вершин дерева.
Во второй строке выведите, сколько вершин дерева находятся от корня на таком расстоянии.
В третьей строке выведите номера этих вершин через пробел в порядке возрастания.
1 ≤ n ≤ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | StdAlg | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | А. Лепёха | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Саша закончил школу и решил поступить на программиста в местный университет. Одним из первых предметов в его курсе стала «Геометрия и топология чисел». На первом же занятии всей группе задали вывести и доказать теорему, которая бы позволила по трем точкам на плоскости определить, является ли треугольник образованный ими прямоугольным.
Саша смог придумать несколько теорем, но его теоремы почему-то дают разные ответы. Напишите программу, которая по координатам трех точек сможет верно определить, образуют это точки прямоугольный треугольник.
В первой строке входных данных заданы целые числа x1 и y1, во второй строке заданы целые числа x2 и y2, в третьей строке заданы целые числа x3 и y3 — координаты трех точек. Все точка попарно различные.
Выходные данные должны содержать YES
, если данные точки образуют прямоугольный треугольник, или NO
в противном случае.
− 104 ≤ xi, yi ≤ 104
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Кленин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Прямоугольник со сторонами, параллельными осям координат, задан координатами противоположных вершин (x1, y1) и (x2, y2).
Будем считать, что точка (x, y) внутри прямоугольника находится в углу, если расстояние от точки до одной из вершин прямоугольника строго меньше, чем до центра прямоугольника.
Напишите программу, которая по данному прямоугольнику и точке определяет, находится ли точка в углу.
Входной файл содержит целые числа x1 y1 x2 y2 x y — координаты вершин прямоугольника и точки.
Выходной файл должен содержать единственную строку CORNER, если точка находится в углу, или CENTER в противном случае.
− 104 ≤ x1,y1,x2,y2 ≤ 104
min(x1, x2) ≤ x ≤ max(x1, x2)
min(y1, y2) ≤ y ≤ max(y1, y2)
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Кленин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
"Дети, нарисуйте в тетрадях квадрат" — сказала учительница. Вася поставил на листе бумаги четыре точки, соединил их с помощью линейки. Получился квадрат... ну, или во всяком случае какой-то четырёхугольник.
Васин сосед Петя согласился помочь исправить рисунок. За время, пока учительница подойдёт для проверки Васиной работы, Петя успеет стереть и перерисовать только одну вершину четырёхугольника.
Требуется написать программу, которая найдёт нужную вершину и её новые координаты или определит, что это невозможно.
− 1000 ≤ x, y ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | А. Кленин | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt |
Прямоугольник со сторонами, параллельными осям координат, задан координатами двух противоположных вершин (x1, y1) и (x2, y2). Отрезок задан координатами вершин (u1, v1) и (u2, v2). Требуется вычислить длину части отрезка, лежащей внутри прямоугольника или на его границе.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов, Д. Горячкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Начинающий программист Вася увлекается робототехникой и посещает турниры, посвященные этой тематике. В рамках каждого турнира перед участниками ставится набор задач, для решения которых требуется писать программу для специализированного робота. Одной из таких задач Вася захотел с вами поделиться.
Имеется манипулятор, состоящий из 2-х звеньев (костей), управляемых моторами. Моторы могут поворачиваться на некоторый положительный угол, заданный в радианах. Требуется, получив на вход координаты (x0, y0), определить, на сколько радиан нужно повернуть каждый из моторов, чтобы манипулятор занял указанную позицию. Начало отсчета координат — крепление первой кости. Длины и углы поворота каждой из костей ограничены.
Входной файл содержит набор вещественных чисел:
R1, R2 — размеры 1-й и 2-й кости;
F1, F2 — максимальный раствор угла для каждой из костей;
x0, y0 — координаты назначения.
Выходной файл должен содержать вещественные значения φ1, φ2 — углы поворота для каждого из моторов, указанные с точностью не менее 5 знаков после запятой.
Если решение не может быть найдено, вывести -1.
Все тесты подобраны таким образом, чтобы снизить влияние погрешности машинного округления на результат решения.
10 > R1 ≥ R2 > 0, π > (F1, F2) > 0,
x0 ∈ [ − 10, 10], y0 ∈ [0, 10]
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Кленин | Ограничение времени: | 5 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Среди данных N точек на плоскости с координатами (xi, yi) требуется найти такие три точки A, B и C, что выпуклый (меньший 180°) ∠ ABC будет наибольшим.
Никакие три исходные точки не лежат на одной прямой.
Во входном файле содержится число N, за которым следует N пар целых чисел xi yi.
В выходном файле должно содержаться три целых числа A B C — номера точек, образующих максимальный угол ∠ ABC. Точки нумеруются с 1. Если решений несколько, вывести любое из них.
3 ≤ N ≤ 103
0 ≤ xi, yi ≤ 106
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | calc.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | calc.out |
В качестве домашнего задания по информатике ученикам предложено разработать специальный калькулятор, который устроен следующим образом.
Сначала пользователь вводит целое положительное число n, которое выводится на экран. Затем пользователь может нажимать на три кнопки: A, B и C.
При нажатии на кнопку A число, которое выведено на экран, делится на 2. Если число на экране нечетное, то остаток отбрасывается. Например, результат этой операции для числа 80 равен 40, а для числа 239 равен 119.
При нажатии на кнопку B к числу, которое выведено на экран, прибавляется 1, и результат делится на 2. Остаток от деления отбрасывается. Например, результат операции для числа 80 равен 40, а для числа 239 равен 120.
При нажатии на кнопку C происходит следующее. Если число, которое выведено на экран, положительное, то из него вычитается 1 и результат делится на 2, остаток отбрасывается. Если же перед нажатием на кнопку C на экран было выведено число 0, то оно остается неизменным. Например, результат операции для числа 80 равен 39, а для числа 239 равен 119.
Пользователь ввел число n и собирается нажать на кнопки операций в некотором порядке. В частности, он планирует нажать на кнопку A суммарно a раз, на кнопку B — b раз и на кнопку C — c раз. Его заинтересовал вопрос, какое минимальное число может получиться в результате выполнения описанных операций.
Требуется написать программу, которая по введенному числу n и числам a, b и c, показывающим количество произведенных на калькуляторе операций разного типа, определяет минимальное число, которое может получиться в результате работы калькулятора.
Входной файл содержит четыре целых числа: n, a, b и c. Числа заданы на одной строке, соседние числа разделены одним пробелом.
Требуется вывести одно число — минимальное число, которое может получиться у пользователя в результате работы калькулятора.
1 ≤ n ≤ 1018, 0 ≤ a, b, c ≤ 60
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | |
---|---|---|---|---|
n | Дополнительные ограничения на a, b, c | |||
1 | 26 | 1 ≤ n ≤ 109 | 0 ≤ (a + b + c) ≤ 7 | |
2 | 23 | 1 ≤ n ≤ 1018 | c = 0 | |
3 | 24 | 1 ≤ n ≤ 1018 | b = 0 | |
4 | 27 | 1 ≤ n ≤ 1018 | 1, 2, 3 |
По запросу сообщается результат окончательной проверки на каждом тесте.
В примере пользователю необходимо оптимально действовать следующим образом: нажать на кнопку B и получить число 36, затем нажать на кнопку A и получить число 18, затем нажать на кнопку C и получить число 8, затем второй раз нажать на кнопку A и получить число 4.
№ | Входной файл (calc.in ) |
Выходной файл (calc.out ) |
---|---|---|
1 |
|
|