【題意】:給出一個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 }