AtCoder Beginner Contest 281 E問題 Least Elements
問題
提出解答
問題の概要
個の整数
が与えられる.
について以下の問題を解け.
個の整数
を昇順に並べたとき, 先頭
個の総和を求めよ.
制約
解法
の昇順
番以内と
の昇順
番以内に選ばれる整数の違いは高々2個である. このことを利用し,
の答えから
の答えを高速に求めることにする.
次のようにして求める.
の時の解答を
とする.
をソートを利用して求める.
- 多重集合
を用意する. この
は昇順
番以内,
はそれ以外の要素を管理する要素である.
の順に以下を行う.
ならば,
から
を削除し, そうでないならば
から
を削除する.
ならば,
に
を挿入し, そうでないならば
から
を追加する.
ならば, 「
の最大値を
に移動させる」または「
の最小値を
に移動させる」を行い,
になるようにする (この操作はどちらか1回のみで済む).
は
に
の差分を加算した値である.
順序つき集合を利用することによって, を
時間で求めることができる.