假的线段树
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
LS疯狂迷恋线段树,但是如果出在语法测试中确实有点过分,那就来一棵假的线段树。
题目描述
线段树是以后要学习的一种神奇的数据结构,它能实现的是对一个数组进行区间修改,区间查询。现在LS给你一个由\(n\)个数组成的数组\(num[n]\),接下来又会让你进行\(m\)次操作,一共可能会有两种操作,如下:
- 当\(opt=1\)时,给出三个数\(l,r,v\),将\(a_l\)到\(a_r\)的所有数都加\(v\)。
- 当\(opt=2\)时,给出两个数\(l,r\),输出\(a_l\)到\(a_r\)之间所有数的和。
PS:题目中所给数列下标从1开始
输入格式
第一行输入两个整数\(n,m\),具体含义见题目描述
第二行输入\(n\)个整数,为数组\(num[\ ]\)。
接下来\(m\)行,每行由三或四个整数构成,为\(opt,l,r,v\)或\(opt,l,r\)。
输出格式
对于每次\(opt=2\)的操作,都要输出该操作得到的和。
输入输出样例
输入#1
5 4
1 2 3 4 5
1 1 3 1
2 1 2
1 2 4 2
2 1 5
输出#1
5
24
数据范围与约定
对于\(100\%\)的数据,\(0 \le n,m \le 100,\ 0 \le v,num[i]\le 10000\)。