求最小

【题目描述】
给你两种操作:

  1. 加入一个数a
  2. 输出并删除所有数中最小的一个数
    一共有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\n", q[l].a);
			l--;
		}
	}
	return 0;
}
posted @ 2020-07-28 16:46  牛大了的牛大  阅读(102)  评论(0编辑  收藏  举报