码迷,mamicode.com
首页 > 其他好文 > 详细

hdu4006

时间:2015-08-07 19:49:46      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

链接:点击打开链接

题意:给出一个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;
}


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu4006

标签:

原文地址:http://blog.csdn.net/stay_accept/article/details/47343515

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!