在不需要完全有序的场景下使用堆
#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")