Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 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 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Задан массив натуральных чисел [a1, a2, …, an]. Весом массива назовём сумму его элементов.
Необходимо разрезать заданный массив на два непустых массива [a1, a2, …, ai] и [ai + 1, ai + 2, …, an] так, чтобы произведение их весов было как можно больше.
Требуется написать программу, которая по заданному массиву определяет, после какого элемента его необходимо разрезать, чтобы произведение весов получившихся массивов было максимальным.
В первой строке входных данных находится целое число n — количество элементов в массиве (2 ≤ n ≤ 2 ⋅ 105). В следующей строке находятся n целых чисел a1, a2, …, an — элементы массива (1 ≤ ai ≤ 109).
Выведите одно число — номер элемента, после которого необходимо разрезать заданный массив. Если оптимальных вариантов ответа несколько, можно вывести любой из них.
1 ≤ ai ≤ 109
2 ≤ n ≤ 2 ⋅ 105
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 10 | 2 ≤ n ≤ 5000, Сумма всех ai не превосходит 109 | полная | |
2 | 10 | 2 ≤ n ≤ 5000, Все ai равны | 1 | полная |
3 | 20 | 2 ≤ n ≤ 5000, ai ≤ 109 | 1, 2 | полная |
4 | 20 | 2 ≤ n ≤ 200000, Сумма всех ai не превосходит 109 | 1 | полная |
5 | 20 | 2 ≤ n ≤ 200000, Все ai равны | 2 | полная |
6 | 20 | 2 ≤ n ≤ 200000, ai ≤ 109 | 1, 2, 3, 4, 5 | полная |
Если сделать разрез после первого элемента, произведение весов равно 1 ⋅ (2 + 3) = 5, а если после второго, то (1 + 2) ⋅ 3 = 9
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Учёные планируют участок для испытательного полигона. Участок должен иметь форму прямоугольника a × b, а полигон должен иметь форму прямоугольника c × d. С точными значениями чисел a, b, c и d ученые пока не определились, однако известно следующее:
Учёные хотят понять, сколько у них способов выбрать подходящие значения a, b, c и d.
Требуется написать программу, которая по заданным n и x определяет количество способов выбрать числа a, b, c и d так, чтобы все описанные условия выполнялись.
В первой строке ввода содержится два целых числа n и x — площадь свободного участка без полигона и запрещенная длина стороны участка соответственно.
Значение x = 0 означает, что ограничений на длины сторон нет (так как длины сторон должны быть натуральными числами, и, следовательно, больше 0).
В единственной строке выведите количество способов выбрать числа a, b, c и d так, что все описанные условия выполняются.
1 ≤ n ≤ 3000
0 ≤ x ≤ 3000
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 11 | 1 ≤ n ≤ 50, x = 0 | первая ошибка | |
2 | 10 | 1 ≤ n ≤ 50 | 1 | первая ошибка |
3 | 20 | 1 ≤ n ≤ 500, x = 0 | 1 | баллы |
4 | 22 | 1 ≤ n ≤ 500 | 1, 2, 3 | баллы |
5 | 17 | 1 ≤ n ≤ 3000, x = 0 | 1, 3 | баллы |
6 | 20 | 1 ≤ n ≤ 3000 | 1, 2, 3, 4, 5 | баллы |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Ведётся разработка универсального банкомата, который сможет работать с любой денежной системой. Пусть в денежной системе некоторой страны используются n типов купюр, номиналы которых равны a1, a2, …, an. При этом все номиналы различны и перечислены в порядке возрастания: если i ≥ 2, то ai − 1 < ai, а также a1 = 1.
Банкомат использует следующий жадный алгоритм для выдачи купюр. Пусть клиент запросил у банкомата сумму c. Изначально есть пустой набор выдаваемых купюр. На каждом шаге алгоритм добавляет в набор купюру максимально возможного номинала так, чтобы сумма номиналов купюр в наборе не превышала c. Когда сумма номиналов купюр в наборе стала равна c, алгоритм останавливается. Отметим, что, поскольку существует купюра с номиналом a1 = 1, алгоритм всегда заканчивает работу за конечное число шагов.
Чтобы оценить эффективность данного алгоритма, требуется выяснить, какое максимальное число купюр может потребоваться выдать за один раз, если максимальная сумма, которую можно запросить, равна b. Поскольку максимальная сумма может зависеть от категории обслуживания клиента, необходимо ответить на q запросов для сумм b1, b2, …, bq.
Требуется написать программу, которая по списку номиналов купюр денежной системы и максимальной сумме, которую можно запросить, определяет сумму, которую необходимо запросить в банкомате, чтобы получить максимальное число купюр, и искомое число купюр.
Первая строка содержит целое число n — количество номиналов купюр (1 ≤ n ≤ 200 000).
Вторая строка содержит n различных целых чисел ai (1 = a1 < a2 < … < an ≤ 1018).
Третья строка содержит целое число q — количество запросов (1 ≤ q ≤ 200 000).
Следующие q строк содержат по одному целому числу bi (1 ≤ bi ≤ 1018).
Для каждого запроса выведите два числа — сумму, которую необходимо запросить в банкомате, чтобы получить максимальное число купюр, и искомое число купюр. Если существует несколько сумм, не превышающих максимального значения, для которых будет выдано максимальное число купюр, требуется вывести любую из них.
1 ≤ n ≤ 200000
1 = a1 < a2 < … < an ≤ 1018
1 ≤ q ≤ 200 000
1 ≤ bi ≤ 1018
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
---|---|---|---|---|
1 | 13 | n ≤ 500, q ≤ 5, ai ≤ 500, bi ≤ 500 | первая ошибка | |
2 | 18 | n = 60, q ≤ 5, ai = 2i − 1 | первая ошибка | |
3 | 20 | q ≤ 5, bi ≤ 2 ⋅ 105 | 1 | первая ошибка |
4 | 21 | q ≤ 5 | 1,2,3 | первая ошибка |
5 | 28 | 1,2,3,4 | первая ошибка |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Друзья готовятся встретить национальную команду, возвращающуюся с международной олимпиады по информатике. Для этого они подготовили множество красочных плакатов. Осталось только продумать детали поздравления.
Для того, чтобы приветствовать команду, 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 |
|
|