B - 買い物 2 (Shopping 2) Editorial by Mitsubachi

別解

$O \left( \left( N + Q \right) \log N \right)$ での解法を書きます。

初めに、クエリを $T$ ごとにまとめます。
$T$ が同じクエリをまとめて処理するとき、商品の値段は変わりません。よって BIT や segtree を使うと $1$ クエリあたり $O \left( \log N \right)$ で処理できます。
$T$ の変化に合わせて商品の値段を変える際、各商品ごとに値段が変わるのは $A -1$ 日目から $A$ 日目に値段を半分にするときと $A$ 日目から $A+1$ 日目に値段を倍にするときの高々 $2$ 回です。よって BIT や segtree の値を変更するのは $O \left( N \right)$ 回なので、この部分は全体で $O \left( N \log N \right)$ で処理できます。

よって全体で $O \left( \left( N + Q \right) \log N \right)$ で解けます。

実装例

posted:
last update: