在不需要完全有序的场景下使用堆
#include <functional>
#include <iostream>
#include "queue"
using namespace std;
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
priority_queue<int, vector<int>, greater<int>> myQueue;
while (n--) {
int temp;
cin >> temp;
myQueue.push(temp);
}
int k;
cin >> k;
int temp = myQueue.top();
myQueue.pop();
while (k > 1) {
if (temp != myQueue.top()) {
k--;
}
temp = myQueue.top();
myQueue.pop();
}
cout<<temp<<endl;
}
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号