求最小
阿新 • • 發佈:2020-07-28
【題目描述】
給你兩種操作:
- 加入一個數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\n", q[l].a); l--; } } return 0; }