Untitled

 avatar
unknown
plain_text
a year ago
934 B
8
Indexable
vector<int> solve(a,l,k) {
    auto balance = [&]() {
        while ((int)small.size() >= l) {
            large.insert(*--small.end());
            small.erase(--small.end());
        }

        while ((int)small.size() < l-1) {
            small.insert(*large.begin());
            large.erase(large.begin());
        }
    };

    auto add = [&](int x) {
        small.insert(x);
    };

    auto rem = [&](int x) {
        auto it = small.find(x);
        if (it != small.end())
            small.erase(it);
        else {
            it = large.find(x);
            large.erase(it);
        }
    };

    for (int i=0; i<k; i++)
        small.insert(a[i]);
    balance();
    vector<int> ret;
    for (int i=k; i<=n; i++) {
        ret.push_back( *large.begin());
        if (i < n) {
            add(a[i]);
            rem(a[i-k]);
            balance();
        }
    }
    return ans;
}
Editor is loading...
Leave a Comment