传送门HDU 4006 - The kth great number
本来想找快速排序的第K个数的题目的,找不到,随便找了一道题水一下。。
利用了优先队列。
队首始终是第k大的元素。如果新插入的数字比他小,对第K大的数字无影响。如果比队首大,队首出队,当前数字入队。
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
//freopen("input.txt", "r", stdin);
priority_queue<int, vector<int>, greater<int> > qu;
int T, i, j, k, num;
char ch;
while (~scanf("%d%d%*c", &T, &k))
{
while (!qu.empty())
qu.pop();
for (i = 0; i < T; i++)
{
scanf("%c", &ch);
if (ch == 'I')
{
scanf("%d%*c", &num);
if (qu.size() < k)
qu.push(num);
else
if (num > qu.top())
{
qu.pop();
qu.push(num);
}
}
else
{
printf("%d\n", qu.top());
getchar();
}
}
}
return 0;
}