为什么std::multiset会TLE
查看原帖
为什么std::multiset会TLE
1074084
asd890123楼主2024/7/1 10:15

rt,按理说内部就是用的红黑树啊,为啥只得了70分,code:

#include <iostream>
#include <set>

int main(){

    #ifndef ONLINE_JUDGE
        freopen("P3369.in","r",stdin);
    #endif

    std::cin.tie(0)->sync_with_stdio(0);

    int n;
    std::multiset<int> ds;

    for (std::cin >> n;n--;){

        int op,x;

        std::cin >> op >> x;
        if (op == 1) ds.insert(x);
        else if (op == 2) ds.erase(ds.find(x));
        else if (op == 3) std::cout << std::distance(ds.begin(),ds.lower_bound(x)) + 1 << '\n';
        else if (op == 4){

            auto it = ds.begin();

            std::advance(it,x - 1);
            std::cout << *it << '\n';

        }
        else if (op == 5) std::cout << *--ds.lower_bound(x) << '\n';
        else std::cout << *ds.upper_bound(x) << '\n';

    }

    return 0;
}

记录

2024/7/1 10:15
加载中...