AtCoder Beginner Contest 237 G 問題 Range Sort Query
問題
提出解答
問題の概要
の並び替え が与えられる. 次の 個のクエリを順に処理した場合, はどこにあるか?
- のとき, を昇順に並び替える.
- のとき, を降順に並び替える.
制約
- は の並び替え
解法
求めるのは最終的な の位置である. それ以外の値については完全にわかる必要がない. そこで, 次のように を作成する.
- ならば,
- ならば,
- ならば,
このとき, における の場所を求めることになる.
の場合の処理を考える. であったとすると, に がそれぞれ 個あることになる. について昇順に並び替えることを念頭に入れると, をそれぞれ を 個, を 個, を 個この順に並べたものに変更すれば良い. の場合も同様である.
上の処理において, 区間和と区間更新を得意とするデータ構造が必要になる. これは例えば遅延評価セグメント木が該当する. 遅延評価セグメントを用いた場合, で処理を完了することができる.