EduBrick

O. Присвоить, прибавить, спросить

3000 мс · 256 МБ · всё или ничего

Дан массив. Три вида запросов: присвоить всем элементам отрезка значение xx, прибавить ко всем элементам отрезка число dd, узнать сумму на отрезке.

Сложность этой задачи не в дереве, а в алгебре пометок.

Формат ввода

В первой строке nn (1≤n≤1051 \le n \le 10^5). Во второй — nn чисел aia_i (∣ai∣≤109|a_i| \le 10^9). В третьей — mm (1≤m≤1051 \le m \le 10^5). В каждой из следующих mm строк — запрос: a l r x — присвоить xx на отрезке, p l r d — прибавить dd на отрезке, s l r — сумма на отрезке (∣x∣,∣d∣≤109|x|, |d| \le 10^9).

Формат вывода

Для каждого запроса s выведите сумму на отдельной строке.

Примеры

ввод
5
1 2 3 4 5
5
s 1 5
a 2 4 0
s 1 5
p 1 5 1
s 1 5
вывод
15
6
11
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.