Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:1024 MB
统计

题目背景

再次进入梦里,我又回到了那片信纸空间。

第二封信上的光芒比上次强了许多,应该是将要打开的迹象。

我抓起第二封信,慢慢开封。

从信封里跳出一张有些长的信纸,一端有些湿润。

同上次一样,我进入了记忆里。

……

在一个装修稍微有点朴素的房间里,一个蓝色犬兽人从床上坐了起来。

我认出来,那是记忆中的“我”。

而此刻的“我”正看着手机——上面写着什么。

我凑近去看,但屏幕上有几个字是模糊的,只能看到“绝对值”这三个字。

“啊,什么的绝对值啊……怎么会看不清呢……”

此时的“我”已经起床了,稍作洗漱,换上衣服,走出了房门。

迎面对上一个睡眼惺忪的虎兽人,“我”说了句,“小老虎,早......

题目描述

给定一个长为 $n$ 的序列 $a$,要求支持以下两种操作:

  1. 给定一个 $k$,将所有 $a_i$ 变成 $|a_i − k|$。
  2. 给定一个区间 $[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$。