#YHMB0032. [模板] 树状数组2 :区间修改,单点查询

[模板] 树状数组2 :区间修改,单点查询

题目:树状数组2 :区间修改,单点查询

题目描述

给定长度为 n n 的数列 a[1],a[2],,a[n] a[1], a[2], \dots, a[n] ,需依次处理 q q 个操作,操作分为两类:

  1. 区间更新1 l r x → 将区间 [l,r] [l, r] 内的每个元素 a[i] a[i] 加上 x x (即 a[l],a[l+1],,a[r] a[l], a[l+1], \dots, a[r] 分别加 x x );
  2. 单点查询2 i → 查询数列中第 i i 个元素 a[i] a[i] 的当前值。

输入格式

  • 第一行:两个整数 n,q n, q 1n,q106 1 \leq n, q \leq 10^6 ),表示数列长度和操作数;
  • 第二行:n n 个整数 a[1],a[2],,a[n] a[1], a[2], \dots, a[n] (初始数列,a[i]106 |a[i]| \leq 10^6 );
  • 接下来 q q 行:每行一个操作,格式为 1 l r x2 i(保证 1lrn 1 \leq l \leq r \leq n x106 |x| \leq 10^6 )。

输出格式

对于每个 单点查询操作(类型2),输出一行,为对应位置的当前值。

样例

输入

3 2  
1 2 3  
1 1 3 0  
2 2  

输出

2