题号:NC226536
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给你一个长度为n的整数序列

,和q次操作,每次操作可能进行如下动作:
1. 选择一个区间[l,r],将区间内每个元素加上k。
2. 选择一个区间[l,r], 求

的和。
输入描述:
第一行两个整数n和q,表示数组长度和操作个数。
接下来一行n个整数,表示数组

接下来q行,每行第一个数op,表示动作类型。
若op=1,则后面有3个整数l,r,k,表示动作1 的三个参数。
若op=2,则后面有2个整数l,r,表示动作2的两个参数。
参数含义详见题目描述。
输出描述:
对每次op=2的操作,请输出一行表示和值。
示例1
输入
复制
4 5
6 2 4 5
1 1 2 5
1 1 4 2
2 1 4
1 3 3 -8
2 3 4