【題意】:給出一個n和k,表示有n個操作。操作只有兩種:1.插入一個數x 2.查詢當前第k小的數。

【題解】:題意很好理解,這里可以直接用stl 的 priority queue,代碼超級短。維護一個優先隊列,使隊列中元素個數總不超過k,查詢時直接輸出堆頂元素即可。

【代碼】:
 1 #include "iostream"
 2 #include "cstdio"
 3 #include "cstring"
 4 #include "queue"
 5 #include "functional"
 6 #include "string"
 7 using namespace std;
 8 int n, k;
 9 void solve() {
10     int val;
11     string s;
12     priority_queue<int, vector<int>, greater<int> > que;
13     for(int i = 0; i < n; i++) {
14         cin >> s;
15         if(s[0== 'I') {
16             scanf("%d"&val);
17             que.push(val);
18             if(que.size() > k) que.pop();
19         } else cout << que.top() << endl;
20     }
21 }
22 
23 int main() {
24     while(~scanf("%d%d"&n, &k)) solve();
25     return 0;
26 }