#XDS101. 线段树求和

线段树求和

题目描述

东东有一个长度为 nn 的整数序列 a1,a2,,ana_1,a_2,\dots,a_n,他希望实现以下两种操作:

  • 将某个位置 xx 的值修改为 yy
  • 查询区间 [x,y][x,y] 内所有数的和。

请你帮他实现这个功能。

输入格式

第一行两个整数 n,qn,q,表示序列长度和操作次数。

第二行 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n,表示初始序列。

接下来 qq 行,每行三个整数,表示一个操作:

  • 若第一个整数为 1,表示将 axa_x 修改为 yy
  • 若第一个整数为 2,表示查询区间 [x,y][x,y] 的元素和。

输出格式

对于每个查询操作,输出一行一个整数,表示该次查询的结果。

5 5
1 2 3 4 5
2 1 3
1 2 10
2 1 3
1 5 0
2 3 5
6
14
7

数据规模与约定

  • 第一次查询 a1+a2+a3=1+2+3=6a_1 + a_2 + a_3 = 1 + 2 + 3 = 6

  • 第二次将 a2a_2 修改为 1010

  • 再次查询 a1+a2+a3=1+10+3=14a_1 + a_2 + a_3 = 1 + 10 + 3 = 14

  • 第三次将 a5a_5 修改为 00

  • 最后查询 a3+a4+a5=3+4+0=7a_3 + a_4 + a_5 = 3 + 4 + 0 = 7

  • 对于 100%100\% 的数据,1n,q1051 \le n,q \le 10^5109ai,y109-10^9 \le a_i,y \le 10^91xn1 \le x \le n,保证查询区间合法。