問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
(はじめに)
問題 5 では親のインデックス計算方法についてやってきました。
その計算方法を用いて、Segment Treeの一点更新を行っていきましょう。
A の i 番目(0-indexed)の要素に対応する葉は頂点 N - 1 + i と計算できるので、問題 5 の T = N - 1 + i のケースと同様に更新対象の頂点を求めていき、葉に近い順(問題 5 での出力順)で計算を行いましょう。
(問題)
配列の長さが n である配列 A が与えられます。問題 3 の手順でSegment Treeを構築し、その配列を Tree とします。
Q 個のクエリが与えられるので順番に処理を行ってください。i 番目のクエリは以下の通りです。
入力は以下のフォーマットで与えられます。
n Q
A_0 A_1 ... A_{n - 1}
p_1 x_1
p_2 x_2
...
p_Q x_Q
答えを Q 行で出力してください。
i (1 ≦ i ≦ Q) 行目には、i番目のクエリの答えを出力してください。
すべてのテストケースについて以下の条件を満たします。
5 2
1 5 7 9 8
3 6
0 5
8 7 8 5 7 8 0 1 5 7 6 8 0 0 0
8 7 8 5 7 8 0 5 5 7 6 8 0 0 0
1 3
100
0 90
0 80
0 70
90
80
70