63TLE求调(玄关)
查看原帖
63TLE求调(玄关)
970208
bfs_MST楼主2024/8/21 11:24

删除一个数的操作可以怎么优化,巨佬们。

#include <bits/stdc++.h>
#define int long long
using namespace std;

map <int , int> mp;
multiset<int>s;
int n,t,x,now;

signed main() {
    s.insert(-2147483647);
    s.insert(2147483647);
    scanf("%lld",&n);
    while(n--) {
        scanf("%lld%lld", &t, &x);
        if(t == 1) {
        	s.insert(x);
        	mp[x]++;
		}
        if(t == 2) {
        	mp[x]--;
        	s.erase(x);
        	for(int i = 1; i <= mp[x]; i++) s.insert(x);
		}
		if(t == 3) {
            auto it = s.lower_bound(x);
            now = 0;
            for(auto i = s.begin(); i != it; i++, now++);
            printf("%lld\n",now);
        }
        if(t == 4) {
            now = -1;
            for(int i : s) if(++now == x) printf("%lld\n",i);
        }
        if(t == 5) {
            auto it = s.lower_bound(x);
            printf("%lld\n", *--it);
        }
        if(t == 6) printf("%lld\n",*s.upper_bound(x));
    }
}
2024/8/21 11:24
加载中...