1. 程式人生 > 實用技巧 >求最小

求最小

【題目描述】
給你兩種操作:

  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;
}