区間和クエリ 2
n 個の要素からなる配列と q 個のクエリが与えられています。クエリには、以下の 2 種類があります。
- 指定された区間の要素の合計を求める
- 指定された位置の配列要素を更新する
これらのクエリを効率的に処理することが求められます。
入力
最初の行には、配列の要素数を表す整数 n と、クエリの数を表す整数 q (1 ≤ n, q ≤ 100000) が与えられます。
次の行には、空白区切りで n 個の整数
a_1, a_2, ..., a_n
(−10^9 ≤ ai ≤ 10^9) が与えられます。これは配列の初期状態を表します。続く q 行には、それぞれクエリが 1 行ずつ与えられます:
- 区間和クエリの場合: 行の先頭が
1
で、続けて li と ri (1 ≤ li ≤ ri ≤ n) が与えられます。指定された範囲[l_i, r_i]
の要素の合計を求めます。
- 配列の更新クエリの場合: 行の先頭が
2
で、続けて pi と xi (1 ≤ pi ≤ n, −10^9 ≤ xi ≤ 10^9) が与えられます。これは配列の pi 番目の要素を新しい値 xi に更新する操作です。
出力
区間和クエリごとに、指定された範囲の要素の合計を 1 行につき 1 つずつ出力してください。
例
入力例 | 出力例 |
5 3
1 2 3 4 5
1 1 3
1 2 4
1 1 5 | 6
9
15 |
5 3
1 2 3 4 5
1 1 3
2 1 5
1 1 5 | 6
19 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB