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

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

Ограничение времени: 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