#9832. 【模板】树状数组 2

    ID: 9832 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>树状数组区间修改单点查询差分树状数组

【模板】树状数组 2

题目描述

如题,已知一个数列,你需要进行下面两种操作:

  • 一是将某区间每一个数加上 xx
  • 二是求出某一个数的值

输入格式

第一行包含两个正整数 n,mn,m 分别表示该数列数字的个数和操作的总个数。第二行包含 nn 个用空格分隔的整数,其中第 ii 个数字表示数列第 ii 项的初始值。接下来 mm 行每行包含 22 个或 44 个整数,表示一个操作,具体如下:

  • 1 x y k:将区间 [x,yx,y] 内每个数加上 kk

  • 2 x:输出第 xx 个数的值

输出格式

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

5 5
1 5 4 2 3
1 2 4 2
2 3
1 1 5 -1
1 3 5 7
2 4
6
10

样例解释

开始的序列为 {1,5,4,2,3}\{1,5,4,2,3\}

第一次操作后,序列变为 {1,7,6,4,3}\{1,7,6,4,3\}

第二次操作,询问得到第 33 个数为 66

第三次操作后,序列变为 {0,6,5,3,2}\{0,6,5,3,2\}

第四次操作后,序列变为 {0,6,12,10,9}\{0,6,12,10,9\}

第二次操作,询问得到第 44 个数为 1010

数据范围与提示

  • 对于 30%30\% 的数据:1n81 \le n \le 81m101 \le m \le 10
  • 对于 70%70\% 的数据:1n1041 \le n \le 10^41m1041 \le m \le 10^4
  • 对于 100%100\% 的数据:1n,m1061 \le n,m \le 10^61x,yn1 \le x,y \le n,保证任意时刻序列中任意元素的绝对值有可能 大于2302^{30}