Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Вы участвуете в разработке программного модуля для системы символьных вычислений. Модуль будет использоваться для решения специального вида диофантовых уравнений.
По заданному целому неотрицательному целому числу n разрабатываемый модуль должен найти два натуральных числа x и y, для которых выполнено равенство x2 − y2 = n. Найденные числа не должны превышать 262 − 1.
Требуется написать программу, которая по заданному целому неотрицательному числу n находит натуральные числа x и y, не превышающие 262 − 1, разность квадратов которых равна n.
В единственной строке дано одно целое число n (0 ≤ n ≤ 260).
Обратите внимание, что заданное во вводе число не помещается в 32-битный
тип данных, необходимо использовать 64-битный тип данных (например,
long long
в C++, int64
в Паскале, long
в Java).
Если искомые x и y существуют, то необходимо вывести две строки: в первой строке выведите слово Yes, а во второй — искомые x и y.
Если подходящих пар x и y несколько, можно вывести любую из них, но должно выполняться условие 1 ≤ x, y ≤ 262 − 1.
Если решения нет, в единственной строке необходимо вывести слово No.
0 ≤ n ≤ 260
1 ≤ x, y ≤ 262 − 1
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 10 | 0 ≤ n ≤ 210 | полная | |
2 | 20 | 0 ≤ n ≤ 220 | 1 | полная |
3 | 30 | 0 ≤ n ≤ 230 | 1,2 | полная |
4 | 40 | 0 ≤ n ≤ 260 | 1,2,3 | полная |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Превышение скорости является опасным нарушением, значительно увеличивающим вероятность трагических последствий транспортных происшествий. К сожалению контроль скорости с использованием радаров и камер не решает проблему полностью. Притормаживая перед камерами, водители едут со значительным превышением на участках дорог, где контроль не ведётся. С целью предотвращения такого поведения используется назначение штрафа за гарантирование превышение скорости, основанное на времени проезда дороги.
Рассмотрим дорогу, состоящую из n участков, пронумерованных от 1 до n. Длина i-го участка составляет li метров. На i-м из участков установлено ограничение по скорости в vi м/с.
За превышение скорости предусмотрены штрафы. В зависимости от превышения, установлены различные штрафы, величина штрафа вычисляется следующим образом.
Пусть e — максимальное превышение разрешённой скорости в процессе пребывания автомобиля на всей дороге, то есть максимальная разница между скоростью автомобиля и максимальной разрешенной скоростью на участке, где он в этот момент находится. Если превышения скорости не было, то штраф не взимается. В противном случае штраф вычисляется так:
Таким образом, есть m диапазонов превышения скорости и соответствующие им штрафы.
Автоматическая система назначения штрафов получила данные о q автомобилях. Для удобства пронумеруем их от 1 до q. Известно, что i-й автомобиль заехал на дорогу в момент времени si, проехал все n участков, после чего выехал с нее в момент времени ti. Отсчёт времени будем вести в секундах с открытия дороги.
Для каждого из автомобилей система должна определить, какой максимальный штраф можно гарантированно выписать этому автомобилю, основываясь только на времени заезда на дорогу и выезда с нее.
Требуется написать программу, которая по описанию границ диапазонов превышения скорости, соответствующих штрафов и временам въезда/выезда автомобилей определяет для каждого автомобиля максимальный штраф, который можно выписать этому автомобилю.
Первая строка входных данных содержит единственное целое число n — количество участков на дороге.
Вторая строка содержит n целых чисел vi — ограничения скорости на участках.
Третья строка содержит n целых чисел li — длины участков.
Четвертая строка содержит единственное целое число m — количество границ диапазонов превышения скорости.
Пятая строка содержит m − 1 целых чисел ai — границы диапазонов превышения скорости. Гарантируется, что значения ai строго возрастают. Обратите внимание, что если m = 1, то пятая строка ввода пустая.
Шестая строка содержит m целых чисел fi — штрафы за диапазоны превышения скоростей. Гарантируется, что значения fi возрастают.
Седьмая строка содержит единственное целое число q — количество автомобилей, которые надо обработать.
Каждая из следующих q строк содержит два целых числа si и ti — время заезда на трассу и выезда с неё i-го из рассматриваемых автомобилей .
Для каждого из q автомобилей выведите в отдельной строке максимальный штраф, который гарантированно можно выписать этому автомобилю, основываясь только на временах его заезда на дорогу и выезда с нее. Если возможна ситуация, что автомобиль ни разу не превысил разрешённую скорость, следует вывести 0.
Гарантируется, что если время въезда или выезда автомобиля изменить не более чем на 10 − 5, штраф, который можно ему выписать, не изменится.
1 ≤ n ≤ 10
1 ≤ vi, li, ai, fi ≤ 109
1 ≤ m, q ≤ 105
1 ≤ si < ti ≤ 109
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 5 | n = 1, m = 1 | первая ошибка | |
2 | 10 | m = 1 | 1 | первая ошибка |
3 | 9 | n = 1, m ≤ 10 | 1 | первая ошибка |
4 | 12 | n = 1 | 1, 3 | первая ошибка |
5 | 13 | m ≤ 10, ai ≤ 10 | первая ошибка | |
6 | 14 | m ≤ 10 | 1, 2, 3, 5 | первая ошибка |
7 | 37 | 1 — 6 | первая ошибка |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Важным элементом повышения эффективности работы сотрудников является борьба с рутиной. Построим математическую модель разнообразия типов заданий, выполняемых сотрудником в компании.
Рассмотрим работу сотрудника в течение n последовательных рабочих дней. Будем считать, что каждый день сотрудник выполняет ровно один тип заданий, обозначим тип заданий, выполняемый сотрудником в i-й день, целым числом ai.
Для оценки рутинности работы сотрудника будем использовать следующую характеристику.
Зафиксируем целое число d и рассмотрим все отрезки из d подряд идущих рабочих дней.
Для каждого такого отрезка найдём количество различных типов заданий,
которые работник выполнял на протяжении этих дней, и просуммируем эти значения.
Полученную величину обозначим как Sd и будем называть её d-разнообразием.
Чем d-разнообразие выше, тем больше различных типов заданий выполнял
сотрудник. Профилем вариативности
сотрудника будем называть массив
значений [S1, S2, …, Sn].
Требуется написать программу, которая по заданной последовательности a1, a2, …, an типов выполняемых сотрудником заданий вычисляет его профиль вариативности.
В первой строке находится единственное целое число n — количество последовательных рабочих дней, которые необходимо проанализировать (1 ≤ n ≤ 2 ⋅ 105).
Во второй строке находится n целых чисел a1, a2, …, an — типы заданий, которое выполнял сотрудник (1 ≤ ai ≤ 109).
Выведите n целых чисел: S1, S2, …, Sn.
1 ≤ ai ≤ 109
1 ≤ n ≤ 2 ⋅ 105
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 12 | 1 ≤ n ≤ 50, 1 ≤ ai ≤ 50 | первая ошибка | |
2 | 10 | 1 ≤ n ≤ 50, 1 ≤ ai ≤ 109 | 1 | первая ошибка |
3 | 10 | 1 ≤ n ≤ 500, 1 ≤ ai ≤ 109 | 1,2 | первая ошибка |
4 | 12 | 1 ≤ n ≤ 5000, 1 ≤ ai ≤ 5000 | 1 | первая ошибка |
5 | 10 | 1 ≤ n ≤ 5000, 1 ≤ ai ≤ 109 | 1 - 4 | первая ошибка |
6 | 16 | 1 ≤ n ≤ 2 ⋅ 105, 1 ≤ ai ≤ 50 | 1 | первая ошибка |
7 | 30 | 1 ≤ n ≤ 2 ⋅ 105, 1 ≤ ai ≤ 109 | 1 - 6 | первая ошибка |
Рассмотрим, как вычисляются значения Sd в первом примере.
1-разнообразие: необходимо просуммировать количество различных типов заданий, выполняемых сотрудником по всем отрезкам, состоящим из одного дня.
Отрезок дней | Типы заданий | Количество различных |
---|---|---|
1 - 1 | 1 | 1 |
2 - 2 | 3 | 1 |
3 - 3 | 2 | 1 |
4 - 4 | 1 | 1 |
5 - 5 | 2 | 1 |
Значение 1-разнообразия равно S1 = 1 + 1 + 1 + 1 + 1 = 5.
2-разнообразие: необходимо просуммировать количество различных типов заданий, выполняемых сотрудником по всем отрезкам, состоящим из двух дней.
Отрезок дней | Типы заданий | Количество различных |
---|---|---|
1 - 2 | 1, 3 | 2 |
2 - 3 | 3, 2 | 2 |
3 - 4 | 2, 1 | 2 |
4 - 4 | 1, 2 | 2 |
Значение 2-разнообразия равно S2 = 2 + 2 + 2 + 2 = 8.
3-разнообразие: необходимо просуммировать количество различных типов заданий, выполняемых сотрудником по всем отрезкам, состоящим из трех дней.
Отрезок дней | Типы заданий | Количество различных |
---|---|---|
1 - 3 | 1, 3, 2 | 3 |
2 - 4 | 3, 2, 1 | 3 |
3 - 5 | 2, 1, 2 | 2 |
Значение 3-разнообразия равно S3 = 3 + 3 + 2 = 8.
4-разнообразие: необходимо просуммировать количество различных типов заданий, выполняемых сотрудником по всем отрезкам, состоящим из четырех дней.
Отрезок дней | Типы заданий | Количество различных |
---|---|---|
1 - 4 | 1, 3, 2, 1 | 3 |
2 - 5 | 3, 2, 1, 2 | 3 |
Значение 4-разнообразия равно S4 = 3 + 3 = 6.
5-разнообразие: необходимо просуммировать количество различных типов заданий, выполняемых сотрудником по всем отрезкам, состоящим из пяти дней.
Отрезок дней | Типы заданий | Количество различных |
---|---|---|
1 - 5 | 1, 3, 2, 1, 2 | 3 |
Значение 5-разнообразия равно S5 = 3.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Жюри чемпионата по скоростному вычислению булевых функций среди роботов готовит задания для участников.
Задание для роботов представляет собой таблицу из m строк и n столбцов, каждая ячейка которой содержит целое число. Обозначим число в i-й строке, j-м столбце таблицы как xi,j. В каждом столбце значения в ячейках таблицы образую перестановку чисел от 0 до m − 1. Иначе говоря, числа в каждом столбце различны: если i ≠ k, то xi, j ≠ xk, j для всех j, и выполнено условие 0 ≤ xi,j < m.
Для каждого столбца таблицы задаётся значение порога — целое неотрицательное число zj от 0 до m. В качестве аргументов булевых функций, которые будут вычислять участники олимпиады, используются значения логических выражений xi,j < zj. Значение такого логического выражения равно 1, если неравенство выполнено, иначе оно равно 0.
В процессе соревнования участники вычисляют значения m булевых функций — по одному для каждой строки. Каждая булева функция задаётся в виде бесповторной монотонной линейной программы (БМЛП).
Рассмотрим БМЛП для i-й строки таблицы. Она представляет собой последовательность из n − 1 инструкции, пронумерованных от 1 до n − 1, p-я инструкция задаётся тремя числами: ap, bp и opp. Число opp принимает два возможных значения: 1 для операции and — логическое "и", 2 для операции or — логическое "или". Числа ap и bp являются номерами аргументов p-й инструкции, выполнены неравенства 1 ≤ ap, bp < n + p.
Рассмотрим массив val[1..2 n − 1], каждое из значений которого равно 0 или 1. Проинициализируем значения val[1]..val[n] с использованием порогов, val[j] = 1, если xi,j < zj, иначе val[j] = 0. Значение val[n + p] вычисляется с использованием p-й инструкции.
При этом программа является бесповторной, а именно все 2 n − 2 значений ap и bp для p от 1 до n − 1 различны. Иначе говоря, ap ≠ bp, а если p ≠ q, то ap ≠ aq, ap ≠ bq, bp ≠ aq и bp ≠ bq.
Результатом исполнения программы является значение val[2 n − 1].
Жюри олимпиады подготовило таблицу xi,j, выбрало булевы функции для каждой строки и записало их в виде БМЛП. Теперь осталось выбрать значение порога для каждого столбца, чтобы получить задание для олимпиады. Жюри считает задание сбалансированным, если ровно s из m программ для строк таблицы возвращают единицу, а остальные m − s возвращают ноль. Ваша задача — помочь жюри найти подходящие значения порогов.
Требуется написать программу, которая по заданным значениям в ячейках таблицы и БМЛП для строк таблицы определяет такие значения порогов zj, чтобы значение ровно s из m заданных функций было равно 1. Можно доказать, что при описанных в условии задачи ограничениях требуемые значения порогов всегда можно подобрать.
В первой строке входных данных заданы целые числа n, m и s (1 ≤ n ≤ 3 ⋅ 105, 1 ≤ m ≤ 3 ⋅ 105, n ⋅ m ≤ 3 ⋅ 105, 0 ≤ s ≤ m).
Далее следует m блоков по n − 1 строке в каждом, каждый блок задает бесповторную монотонную линейную программу для одной строки таблицы. В каждом блоке p-я строка содержит 3 целых числа: ap, bp и opp (1 ≤ ap < n + p, 1 ≤ bp < n + p, гарантируется, что в одном блоке все значения ap и bp попарно различны, opp = 1 или opp = 2).
Последние m строк задают таблицу, i-я строка содержит n целых чисел, j-е из которых равно xi, j (0 ≤ xi, j ≤ m − 1, в каждом столбце все числа различны, то есть если i ≠ k, то xi, j ≠ xk, j для всех j).
Выведите n целых чисел — искомые значения порогов z1, z2, …, zn (0 ≤ zj ≤ m). Если подходящих вариантов несколько, выведите любой из них.
1 ≤ n ≤ 3 ⋅ 105, 1 ≤ m ≤ 3 ⋅ 105, n ⋅ m ≤ 3 ⋅ 105, 0 ≤ s ≤ m
1 ≤ ap < n + p, 1 ≤ bp < n + p, гарантируется, что в одном блоке все значения ap и bp попарно различны, opp = 1 или opp = 2
1 ≤ ti ≤ 109, 1 ≤ ki ≤ 1018
0 ≤ xi, j ≤ m − 1, в каждом столбце все числа различны, то есть если i ≠ k, то xi, j ≠ xk, j для всех j
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 10 | n ≤ 2, m ≤ 103 | первая ошибка | |
2 | 10 | n ≤ 2, m ≤ 105 | 1 | первая ошибка |
3 | 10 | n ≤ 10, m ≤ 2 | первая ошибка | |
4 | 5 | xi,j = i − 1 | первая ошибка | |
5 | 5 | opp = 1, только операции "и" | первая ошибка | |
6 | 20 | n ≤ 100 | 1, 2, 3 | первая ошибка |
7 | 10 | БМЛП для всех строк одинаковые | первая ошибка | |
8 | 30 | нет | 1 — 7 | первая ошибка |
В примере в таблице три строки, каждой соответствует формула. Необходимо найти четыре порога так, чтобы ровно две формулы возвращали 1, а оставшаяся — 0.
Рассмотрим, как будет вычисляться массив val для первой строки.
Первые четыре значения вычисляются на основе чисел в этой строке и порогов:
Далее выполняем линейную программу для первой строки:
Таким образом значение булевой функции для первой строки равно 0. Кстати, если эту функцию записать формулой, то получится:
(((x1,1 < z1) and (x1,2 < z2)) or ((x1,3 < z3) and (x1,4 < z4))).
Аналогично, булева функция для второй строки равна:
((((x2,1 < z1) or (x2,2 < z2)) and (x2,3 < z3)) or (x2,4 < z4)),
а для третьей строки:
(((x3,1 < z1) and (x3,4 < z4)) or ((x3,2 < z2) and (x3,3 < z3))).
При подстановке порогов z1 = 0, z2 = 1, z3 = 2, z4 = 3 получим следующие выражения.
Вторая строка:
((((2 < 0) or (2 < 1)) and (1 < 2)) or (0 < 3)) = (((0 or 1) and 1) or 1) = (0 or 1) = 1,
Третья строка:
(((1 < 0) and (1 < 3)) or ((0 < 1) and (0 < 2))) = ((0 and 0) or (1 and 1)) = (0 or 1) = 1.
Заметим, что это не единственный подходящий набор порогов, также подойдут, например, значения z1 = 0, z2 = 0, z3 = 3, z4 = 3.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|