N
最初に整数の配列が与えられます( 1<=N<=105 )
。この配列を指定すると、2 種類の操作を実行する必要があります。
(i) Operation 1 : Op1( l, r )
2 つの整数l
とが与えられますr
。( 1 <= l <= r <= current size of the array )
. l
とr
(両方を含む)の間のインデックスを持つすべての要素の合計を返す必要があります。つまり、現在配列内にある要素が a1、a2、a3.... an の場合、次の を返す必要がありますsum : al + al+1 + al+2 ... + ar
。
(ii) Operation 2 : Op2( x )
単一の整数 x が与えられます( |x| <= 109 )
。この要素を配列の先頭に追加します。この操作の後、x
は になりa1
、 はold a1
になりa2
ます。配列のサイズは だけ増加し1
ます。
最初に与えられた配列でセグメントツリーを作成し、範囲合計を計算できました....しかし、セグメントツリーに1つの要素を追加して、それに応じて変更するにはどうすればよいですか?