【题目描述】
给你两种操作:
- 加入一个数a
- 输出并删除所有数中最小的一个数
一共有n个操作
【输入格式】
第一行:n
剩下的n行 :
1.有一个0和一个数a,表示操作1
2.有一个1,表示操作2
【输出格式】
对每一个操作2,输出一行表示答案
【输入样例】
5
0 1
0 3
1
0 -1
1
【输出样例】
1
-1
【数据范围】
0%的数据 n<1
30%的数据n<=1000
100%的数据n<=100000
代码
#include<bits/stdc++.h>
using namespace std;
struct point{
int a, u;
};
point q[100001];
int n;
bool cmp1(point u, point v){
return u.a > v.a;
}
int main(){
freopen("small.in", "r", stdin);
freopen("small.out", "w", stdout);
cin >> n;
int l = 0, x, a;
for(int i = 1; i <= n; i++){
scanf("%d", &x);
if(x == 0){
scanf("%d", &a);
l++;
q[l].a = a;
q[l].u = l;
}
else{
sort(q+1, q+1+l, cmp1);
printf("%d
", q[l].a);
l--;
}
}
return 0;
}