はまやんはまやんはまやん

hamayanhamayan's blog

ここでちょっとQK! [yukicoder No.649]

https://yukicoder.me/problems/no/649

解法

https://yukicoder.me/submissions/235229

平衡二分木を使って、K番目の数を取得できるMultiSetを作る。
これが作れれば、あとは使うだけ。
K番目の数を取得できるsetはある。

int Q, K;
SuperMultiSet<ll> rbst;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> Q >> K;
    rep(q, 0, Q) {
        int t; cin >> t;
        if (t == 1) {
            ll v; cin >> v;
            rbst.insert(v);
        }
        else {
            int n = rbst.size();
            if (n < K) printf("-1\n");
            else {
                ll ans = rbst.getAt(K - 1);
                rbst.erase(ans);
                printf("%lld\n", ans);
            }
        }
    }
}