以下の内容はhttps://blog.hamayanhamayan.com/entry/2018/02/10/011635より取得しました。


ここでちょっと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);
            }
        }
    }
}



以上の内容はhttps://blog.hamayanhamayan.com/entry/2018/02/10/011635より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14