题目描述
输入n,紧接着需要进行n次操作,第i次操作为:“op[i],x[i]”。 如果op[i]=1,表示需要把x[i]放入优先队列。
如果op[i]=2,忽略x[i],表示需要输出当前优先队列中的最大元素。
如果op[i]=3,忽略x[i],表示需要把优先队列中的最大元素丢出队列。
输入格式
第一行一个整数 n。
接下来 n 行,每行都是空格隔开的两个整数,第i行为:“op[i],x[i]”。
输出格式
对每个操作 2,输出一行一个整数,即这个操作的答案。
//数据范围懒得打,反正n<=10的6次方,都开long long 即可
tle代码:
#include <bits/stdc++.h>
using namespace std;
long long op[1000005];
long long x[1000005];
long long p[1000009];
int main() {
long long n;
cin>>n;
for (int i=1; i<=n; i++){
cin>>op[i]>>x[i];
if (op[i] == 1){
p[i]=x[i];
}
if (op[i] == 2){
sort(p+1, p+n+1);
cout<<p[n]<<endl;
}
if (op[i] == 3){
sort(p+1, p+n+1);
p[n]=0;
}
}
return 0;
}