A59 - RSQ (Range Sum Queries) Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N の数列 A = (A_1, A_2, \ldots, A_N) があり、最初はすべての要素が 0 になっています。以下の 2 種類のクエリを処理してください。

  • クエリ 1A_{\mathrm{pos}} の値を x に更新する。
  • クエリ 2A_l, A_{l+1}, \ldots, A_{r-1} の合計値を答える。

ただし、与えられるクエリの数は全部で Q 個であるとします。

制約

  • 入力はすべて整数である
  • 1 \leq N \leq 100000
  • 1 \leq Q \leq 100000
  • 1 \leq \mathrm{pos} \leq N
  • 0 \leq x \leq 1000
  • 1 \leq l < r \leq N + 1

入力

入力は以下の形式で標準入力から与えられます。

N Q
\mathrm{Query}_1
\mathrm{Query}_2
\vdots
\mathrm{Query}_Q

i 番目のクエリ \mathrm{Query}_i では、まずクエリの種類 c_i1 または 2)が与えられます。c_i = 1 の場合は \mathrm{pos}, x が、c_i = 2 の場合は l, r が追加で与えられます。

すなわち、各クエリは以下に示す 2 つの形式のいずれかです。

1 \mathrm{pos} x
2 l r

出力

クエリ 2 の答えを、順番に出力してください。


入力例 1

8 4
1 3 16
1 6 24
2 4 8
2 1 7

出力例 1

24
40
  • はじめ、A = (0, 0, 0, 0, 0, 0, 0, 0) です。
  • 1 個目のクエリでは、A_3 の値を 16 に更新します。A = (0, 0, 16, 0, 0, 0, 0, 0) となります。
  • 2 個目のクエリでは、A_6 の値を 24 に更新します。A = (0, 0, 16, 0, 0, 24, 0, 0) となります。
  • 3 個目のクエリでは、(A_4, A_5, A_6, A_7) = (0, 0, 24, 0) の合計値 24 を出力します。
  • 4 個目のクエリでは、(A_1, A_2, A_3, A_4, A_5, A_6) = (0, 0, 16, 0, 24, 0) の合計値 40 を出力します。