看大部分题解都是使用最小堆优先队列,不过我是直接以题入手,题问什么我答什么,既然提到多重集合,那么不妨就使用这个数据结构来解题:
#include <iostream>
#include <set>
using namespace std;
int main() {
multiset<long long>a;
int n;
cin >> n;
while (n--) {
int op;
cin >> op;
switch (op) {
case 1:{
long long x;
cin >> x;
a.insert(x);
break;
}
case 2:{
cout << *(a.begin()) << '\n';
break;
}
case 3:{
auto it = a.begin();
a.erase(it);
break;
}
}
}
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号