对于给定的长度为 的数组 ,你需要构建一个能够动态维护区间和信息的数据结构,使得其能支持: 区间修改:将 这个区间中的全部元素增加 ; 区间和查询:输出 这个区间中的元素之和,即 。 提示 本题为『离线 ‖ 动态:区间修改+区间查询 ‖ 区间和』模板题,我们可以使用线段树解决,预期实现时间复杂度为 。您也可以尝试使用区间扩展版的树状数组解决本题,其运行时的常数更小。
输入描述:
第一行输入两个整数 代表数组中的元素数量、操作次数。第二行输入 个整数 代表初始数组。此后 行,每行先输入一个整数 代表操作编号,随后: 若 ,在同一行输入三个整数 代表区间修改;若 ,在同一行输入两个整数 代表区间和查询。


输出描述:
对于每一次询问,输出一行一个整数代表区间和。保证至少存在一次询问。
示例1

输入

6 5
1 1 4 5 1 4
2 1 6
1 1 6 -3
1 4 4 1
2 4 6
2 2 2

输出

16
2
-2

说明

\hspace{15pt}对于第一次操作,查询 \{{\color{orange}{1, 1, 4, 5, 1, 4}} \}(全局查询)答案输出 16
\hspace{15pt}对于第二次操作,数组变为 \{{\color{red}{-2, -2, 1, 2, -2, 1}} \}(全局修改);
\hspace{15pt}对于第三次操作,数组变为 \{-2, -2, 1, {\color{red}{3}}, -2, 1 \}(单点修改);
\hspace{15pt}对于第四次操作,查询 \{-2, -2, 1, {\color{orange}{3, -2, 1}} \} 答案输出 2
\hspace{15pt}对于第五次操作,查询 \{-2, {\color{orange}{-2}}, 1, 3, -2, 1 \}(单点查询)答案输出 -2
加载中...