U529392 Annoying Sequences

题目描述

请你维护一个长度为 $N$ 的序列 $a$(第一个元素下标从 $1$ 开始),要求支持如下 $4$ 种操作: 1. 给定区间 $[l,r]$, 求出 $\sum^{r}_{i=l} a_i$。 2. 给定区间 $[l,r]$,将序列 $a$ 区间内每个数加上 $x$。 3. 给定 $x$ 和 $y$,将 $a_x$ 改为 $max(a_x-k,0)$,并将 $a_y$ 加上 $k$。 4. 给定区间 $[l,r]$,将 $a_i \gets max(a_i-k,0)(l\le i\le r)$

输入格式

第一行两个整数,$N$ 和 $q$,分别表示序列大小和操作的个数。 第二行有 $N$ 个整数,第 $i$ 个整数表示序列中的第 $i$ 个数 $a_i$。 接下来 $q$ 行,每行表示一个操作。每行首先给出操作类型的编号 $op$。 - 若 $op=1$,则接下来有两个正整数 $l,r$,表示上述操作 $1$。 - 若 $op=2$,则接下来有三个整数 $l,r,k$,表示上述操作 $2$。 - 若 $op=3$,则接下来有三个整数 $x,y,k$,表示上述操作 $3$。 - 若 $op=4$,则接下来有三个整数 $l,r,k$,表示上述操作 $4$。

输出格式

对于每个 $op=1$ 的操作,输出一行一个整数表示答案。

说明/提示

### 样例解释#1 操作过程中 $a$ 序列元素变化如下: *[2,4,5,1,6,3,2,3]* *[6,8,9,5,6,3,2,3]* *[6,8,6,5,6,3,2,6]* *[6,2,0,0,0,3,2,6]* *[6,2,0,2,2,5,4,8]* *[3,0,0,0,0,2,1,8]* ### 数据范围 #### 【数据范围】 - 对于 $10\%$ 的数据保证 $1\le n,q\le 10000$,$0\le a_i,k\le 1000$。 - 对于 $70\%$ 的数据保证 $1\le n,q\le 10^5$,且随机生成。 - 对于另外 $10\%$ 的数据保证无操作 $4$。 - 对于 $100\%$的数据保证 $1\le n,q\le 2\times 10^5$,$0\le a_i,k\le10^9$。