ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

[Онлайн] ICPC Ural Regional Contest Qualifier 2026

Описание     Задачи     Отправить на проверку     Состояние проверки     Результаты
Соревнование завершено

K. Прогрессивность

Ограничение времени: 2.0 секунды
Ограничение памяти: 256 МБ
В одной игре N уровней, за каждый из которых можно получать какое угодно целое количество очков (в том числе и нулевое, и отрицательное). Вадим умеет проходить i-й уровень на ai очков.
Прогрессом считается набор уровней подряд, очки за которые строго увеличиваются. Например, если 2-й уровень пройден на −4 очка, 3-й — на 0 очков, а 4-й — на 3 очка, то такой набор уровней и очков — прогресс.
Прогрессивность уровня — размер наибольшего по количеству (не по очкам) прогресса, которому принадлежит уровень. Например, если уровни пройдены на [9, 4, 5, 6, 1] очков, то прогрессивность 3-го уровня равна 3, так как прогресс [4, 5, 6] нельзя увеличить ни влево, ни вправо.
Понятно, что всех игроков интересует лишь суммарная прогрессивность всех уровней. Вадим посчитал свою и немного разочаровался. Следующие Q дней он потратил на изменение своей стратегии. В каждый из дней могло произойти одно из двух:
  • Изменение скилла. С уровня lj по уровень rj Вадим получает на vj очков больше. Заметьте, что скилл может как увеличиться, так и уменьшиться.
  • Постоянство. Вадим тренирует постоянство с уровня lj по уровень rj и теперь получает на них всех ровно vj очков. Заметьте, что это значение также может быть как нулевым, так и отрицательным.
После каждого дня Вадим считал новую суммарную прогрессивность. Всего у него получилось Q+1 записей. Ваша цель заключается в том, чтобы восстановить их все по описанным изменениям стратегии.

Исходные данные

В первой строке даётся целое число N — количество уровней в игре (2 ≤ N ≤ 105).
Во второй строке даются N целых чисел ai — изначальное количество очков, которое получает Вадим за прохождение i-го уровня (−109 ≤ ai ≤ 109).
В третьей строке даётся целое число Q — количество дней с изменениями (1 ≤ Q ≤ 105).
В следующих Q строках описаны изменения в одном из двух форматов:
  • + lj rj vj — изменение скилла (код символа 43).
  • = lj rj vj — тренировка постоянства (код символа 61).
Для каждого дня верны неравенства 1 ≤ lj ≤ rj ≤ N и −109 ≤ vj ≤ 109.

Результат

Выведите Q+1 целых чисел — суммарную прогрессивность до изменений и после каждого из них.

Пример

исходные данныерезультат
5
3 7 2 5 3
4
+ 2 3 6
= 4 5 10
+ 1 2 -8
= 5 5 21
9
7
9
17
25
Автор задачи: Вадим Баринов
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2026