标签:
链接:点击打开链接
题意:给出一个n和一个k,n为有多少条命令,命令分为两种,输入‘I’时代表增加一个数,输入‘Q’代表询问并输出第k大的数
代码:
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
int main(){
int i,n,k,num;
char c;
priority_queue<int,vector<int>,greater<int> >q;
while(scanf("%d%d",&n,&k)!=EOF){
while(q.size())q.pop(); //初始化队列
for(i=1;i<=n;i++){
cin>>c;
if(c=='I'){
scanf("%d",&num);
if(q.size()<k) //永远使队首为所求的值
q.push(num);
else if(q.top()<num) //当队首小于输入值时,所求的
q.pop(),q.push(num); //值的大小一定发生变化,因此
} //q.pop()
else
printf("%d\n",q.top()); //运用优先队列使得队首永远是所求值
}
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/stay_accept/article/details/47343515