#6721. 仓库库存统计

仓库库存统计

仓库库存统计

题目描述

某仓库有 n 个货架,编号为:

1 ~ n

i 个货架当前存放商品数量为:

a[i]

仓库管理员需要实时统计库存情况。

系统需要支持两种操作:


操作类型 1:查询库存

输入:

1 x

表示查询前 x 个货架中的商品总数量。

即:

a1+a2+...+axa_1+a_2+...+a_x

输出该结果。


操作类型 2:增加库存

输入:

2 p v

表示:

p 个货架增加 v 件商品。

即:

ap=ap+va_p=a_p+v 修改后需要保存新的库存数量,方便之后查询。


请你编写程序,帮助仓库管理员完成所有操作。


输入格式

第一行包含两个整数:

n q

表示:

  • n:货架数量
  • q:操作次数

第二行包含 n 个整数:

a1 a2 ... an

表示初始库存数量。

接下来 q 行,每行一个操作:

如果操作类型为:

1 x

表示查询前 x 个货架库存总数。

如果操作类型为:

2 p v

表示第 p 个货架增加 v 件商品。


输出格式

对于每一次查询操作:

1 x

输出一行答案。


数据范围

对于所有测试数据:

1 ≤ n,q ≤ 100000
0 ≤ a[i] ≤ 10^9
1 ≤ p,x ≤ n
1 ≤ v ≤ 10^9

保证所有查询结果不会超过:

long long

范围。


输入样例

5 5
1 2 3 4 5
1 3
2 3 10
1 3
1 5
1 2

输出样例

6
16
25
3

样例解释

初始库存:

货架编号:
1 2 3 4 5

库存:
1 2 3 4 5

第一次操作:

1 3

查询前 3 个货架:

1+2+3=6

输出:

6

第二次操作:

2 3 10

表示:

第 3 个货架增加 10 件商品。

库存变为:

1 2 13 4 5

第三次操作:

1 3

查询:

1+2+13=16

输出:

16

第四次操作:

1 5

查询:

1+2+13+4+5=25

输出:

25

第五次操作:

1 2

查询:

1+2=3

输出:

3
测试点编号 n ≤ q ≤ 难度层级 特殊性质 覆盖点 / 设计目的
1 3 弱数据 最小规模 单元素、初值为 0、单点更新后查询
2 5 全正数 基础前缀和、查询中间与末尾、一次更新
3 6 正常数据 含 0 和负数 负数更新、前缀和增减变化
4 8 重复更新同一位置 同点多次修改、正数变负数、首位边界
5 8 9 n 为 2 的幂 树状数组典型边界、首尾查询
6 5 6 极限数据 long long 大数 10¹² 量级、正负抵消、64 位整数
7 10 11 正常数据 初始全 0 多点增减、查询更新位置前后差异
8 12 10 全相同 首尾与中间更新、重复值场景
9 20 15 极限数据 交替正负 大量抵消、边界相邻位置更新
10 30 20 较多操作 多次取消原值、混合更新与查询