【题目描述】
给定数列 a[1],a[2],…,a[n],你需要依次进行 q 个操作,操作有两类:
1、l r x:给定 l,r,x,对于所有 i∈[l,r],将 a[i] 增加 x(换言之,将 a[l],a[l+1],…,a[r] 分别增加 x);
2、l r:给定 l,r,求 ∑i=lrf(i)的值
f(k)=ak×∑i=k+1rai
【输入】
第一行包含 2 个正整数 n,q,表示数列长度和询问个数。保证 1≤n,q≤105 。
第二行 n 个整数 a[1],a[2],…,a[n],表示初始数列。保证 ∣a[i]∣≤100 。
接下来 q 行,每行一个操作,为以下两种之一:
1、l r x:对于所有 i∈[l,r],将 a[i] 增加 x;
2、l r:输出 ∑i=lrf(i)的值
f(k)=ak×∑i=k+1rai
保证 1≤l≤r≤n,∣x∣≤100 。
【输出】
对于每个 2 l r 操作,输出一行,每行有一个整数,表示所求的结果。
【输入样例】
5 2
1 2 3 4 5
1 1 2 1
2 1 2
【输出样例】
6
【提示】
数据范围与提示:
对于所有数据,1≤n,q≤105,∣a[i]∣≤100,1≤l≤r≤n,∣x∣≤100 。