#P13825. 【模板】线段树 1.5

【模板】线段树 1.5

题目描述

如题,已知一个长度为 nn 的数列 {ai}(1≤i≤n)\{a_i\}(1 \leq i \leq n),初始时 aa 序列满足 ai=ia_i = i。你需要进行下面两种操作:

  1. 将某区间每一个数加上 kk。
  2. 求出某区间每一个数的和。

输入格式

第一行包含两个整数 n,mn, m,分别表示该数列数字的个数和操作的总个数。

接下来 mm 行每行包含 33 或 44 个整数,表示一个操作,具体如下:

  1. 1 l r k:将区间 [l,r][l,r] 内每个数加上 kk。
  2. 2 l r:输出区间 [l,r][l,r] 内每个数的和。

输出格式

输出包含若干行整数,即为所有操作 2 的结果。

5 5
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4
9
9
18

提示

对于 30%30\% 的数据,n≤8n \le 8,m≤10m \le 10。
对于 50%50\% 的数据,n≤105n \le {10}^5。
对于 100%100\% 的数据,1≤m,k≤1051 \le m,k \le {10}^5,1≤l≤r≤n≤1091 \leq l \leq r \leq n\leq 10^9。