けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

yukicoder 649 ここでちょっとQK!

yukicoder 649 ここでちょっとQK!

K は固定で与えられる。数の集合 S に対する以下の Q 個のクエリを処理してください。i 番目のクエリは以下のいずれかです。

タイプ 1: S に数 v[i] を追加する。
タイプ 2: S に含まれる数のうち K 番目に小さい数を答え、その数を S から削除する。

・1 <= Q <= 200000
・1 <= K <= 200000
・0 <= v[i] <= 1018

解法

公式解説に以下の 3 通りの解法が書いてあります。

  • 座標圧縮 + BIT上二分探索
  • 2 つの priority_queue
  • 平衡二分探索木で殴る

3 つとも実装してみたので別途 Qiita に書きました。