Задача A. Разность квадратов

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
1100 ≤ n ≤ 210полная
2200 ≤ n ≤ 2201полная
3300 ≤ n ≤ 2301,2полная
4400 ≤ n ≤ 2601,2,3полная

Примеры тестов

Стандартный вход Стандартный выход
1
3
Yes
2 1
2
2
No

Задача B. Превышение скорости

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
15 n = 1, m = 1 первая ошибка
210m = 1 1 первая ошибка
39 n = 1, m ≤ 10 1 первая ошибка
412n = 1 1, 3 первая ошибка
513m ≤ 10, ai ≤ 10 первая ошибка
614m ≤ 10 1, 2, 3, 5первая ошибка
737 1 — 6 первая ошибка

Примеры тестов

Стандартный вход Стандартный выход
1
3
10 20 30
400 500 600
6
1 5 10 12 16
100 300 600 800 1000 1500
3
10 100
20 70
45 100
0
800
600

Задача C. Борьба с рутиной

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
112 1 ≤ n ≤ 50, 1 ≤ ai ≤ 50первая ошибка
2101 ≤ n ≤ 50, 1 ≤ ai ≤ 1091первая ошибка
3101 ≤ n ≤ 500, 1 ≤ ai ≤ 1091,2первая ошибка
4121 ≤ n ≤ 5000, 1 ≤ ai ≤ 50001первая ошибка
5101 ≤ n ≤ 5000, 1 ≤ ai ≤ 1091 - 4первая ошибка
616 1 ≤ n ≤ 2 ⋅ 105, 1 ≤ ai ≤ 501первая ошибка
730 1 ≤ n ≤ 2 ⋅ 105, 1 ≤ ai ≤ 1091 - 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
5
1 3 2 1 2
5 8 8 6 3 
2
3
10 10 10
3 2 1 

Задача D. Олимпиада для роботов

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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 ≤ 3105, 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 ≤ 3105, 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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
110n ≤ 2, m ≤ 103 первая ошибка
210n ≤ 2, m ≤ 105 1первая ошибка
310n ≤ 10, m ≤ 2 первая ошибка
45xi,j = i − 1 первая ошибка
55opp = 1, только операции "и" первая ошибка
620n ≤ 100 1, 2, 3первая ошибка
710БМЛП для всех строк одинаковые первая ошибка
830нет 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 = 0z2 = 1z3 = 2z4 = 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 = 0z2 = 0z3 = 3z4 = 3.

Примеры тестов

Стандартный вход Стандартный выход
1
4 3 2
1 2 1
3 4 1
5 6 2
1 2 2
3 5 1
4 6 2
1 4 1
2 3 1
5 6 2
0 1 2 2
2 2 1 0
1 0 0 1
0 1 2 3

Задача E. Максимальное произведение

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
1102 ≤ n ≤ 5000, Сумма всех ai не превосходит 109полная
2102 ≤ n ≤ 5000, Все ai равны1полная
320 2 ≤ n ≤ 5000, ai ≤ 1091, 2полная
4202 ≤ n ≤ 200000, Сумма всех ai не превосходит 1091полная
5202 ≤ n ≤ 200000, Все ai равны2полная
6202 ≤ n ≤ 200000, ai ≤ 1091, 2, 3, 4, 5полная

Замечание

Если сделать разрез после первого элемента, произведение весов равно 1 ⋅ (2 + 3) = 5, а если после второго, то (1 + 2) ⋅ 3 = 9

Примеры тестов

Стандартный вход Стандартный выход
1
3
1 2 3
2

Задача F. Планировка участка

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
1111 ≤ n ≤ 50, x = 0 первая ошибка
2101 ≤ n ≤ 50 1 первая ошибка
3201 ≤ n ≤ 500, x = 0 1 баллы
4221 ≤ n ≤ 500 1, 2, 3 баллы
5171 ≤ n ≤ 3000, x = 01, 3 баллы
6201 ≤ n ≤ 3000 1, 2, 3, 4, 5баллы

Примеры тестов

Стандартный вход Стандартный выход
1
3 0
1
2
5 0
5
3
5 3
2

Задача G. Банкомат

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
113n ≤ 500, q ≤ 5, ai ≤ 500, bi ≤ 500первая ошибка
218n = 60, q ≤ 5, ai = 2i − 1первая ошибка
320 q ≤ 5, bi ≤ 2 ⋅ 1051первая ошибка
421q ≤ 51,2,3первая ошибка
5281,2,3,4первая ошибка

Замечание

Примеры тестов

Стандартный вход Стандартный выход
1
4
1 5 10 50
3
2
8
50
2 2
8 4
49 9

Задача H. Плакаты

Автор:Центральная предметно-методическая комиссия   Ограничение времени: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

Система оценивания

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Ограничения Необходимые подзадачи Информация о проверке
111 n ≤ 10, q = 0 первая ошибка
212 n ≤ 10, q ≤ 10 1 первая ошибка
313 n ≤ 1 000, q ≤ 1 000 1,2 первая ошибка
417 n ≤ 40 000, q = 0 1 первая ошибка
547 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
6
1 2 3 4 5 6
2
6 0
2 5
17
13
15

0.551s 0.020s 27