题目背景
再次进入梦里,我又回到了那片信纸空间。
第二封信上的光芒比上次强了许多,应该是将要打开的迹象。
我抓起第二封信,慢慢开封。
从信封里跳出一张有些长的信纸,一端有些湿润。
同上次一样,我进入了记忆里。
……
在一个装修稍微有点朴素的房间里,一个蓝色犬兽人从床上坐了起来。
我认出来,那是记忆中的“我”。
而此刻的“我”正看着手机——上面写着什么。
我凑近去看,但屏幕上有几个字是模糊的,只能看到“绝对值”这三个字。
“啊,什么的绝对值啊……怎么会看不清呢……”
此时的“我”已经起床了,稍作洗漱,换上衣服,走出了房门。
迎面对上一个睡眼惺忪的虎兽人,“我”说了句,“小老虎,早......
题目描述
给定一个长为 $n$ 的序列 $a$,要求支持以下两种操作:
- 给定一个 $k$,将所有 $a_i$ 变成 $|a_i − k|$。
- 给定一个区间 $[l, r]$,求 $\sum\limits_{i=l}^ra_i$。
我想凑近看看,但是……看到盒子里的东西也都是模糊的,就像早上看到“我”的手机时一样。
“到底是什么东西……”
输入格式
从文件 $\mathbf{\mathit{memory.in}}$ 中读入数据。
第一行两个整数 $n,q$,表示序列长度和操作次数。
接下来一行 $n$ 个整数,表示序列 $a$。
接下来 $q$ 行,每行一个操作形如:
- $1$ $k$,表示执行一次修改。
- $2$ $l$ $r$,表示一次询问。
输出格式
输出到文件 $\mathbf{\mathit{memory.out}}$ 中。
样例 1 输入
5 5
1 2 3 4 5
2 1 5
1 3
2 1 5
1 8
2 1 5
样例 1 输出
15
6
34
样例 1 解释
两次操作后序列分别为 $\{2, 1, 0, 1, 2\}$,$\{6, 7, 8, 7, 6\}$。
数据范围
对于 $20\%$ 的数据,$n, q \leq 10^3$。
对于 $40\%$ 的数据,$n, q \leq 5 \times 10^4$。
对于另外 $15\%$ 的数据,$l = r$。
对于另外 $15\%$ 的数据,$l = 1, r = n$。
对于另外 $15\%$ 的数据,保证所有修改操作的 $k$ 都相等。
对于 $100\%$ 的数据,$1 \leq n, q \leq 10^5$, $1 \leq a_i, k \leq 10^9$, $1 \leq l \leq r \leq n$。