HDU4006 The kth great number [堆]

  水题。虽然求第K大值的方法有很多种,各种树都可以,但这题只要一个元素个数固定的堆就可以了。。。。

  

#include <stdio.h>
#include <string.h>
#include <queue>
#define MAXN 1000000

int n,k,num;
char op[5];
int main(){
//freopen("test.in","r",stdin);
    while(scanf("%d%d",&n,&k)!=EOF){
        std::priority_queue<int,std::vector<int>,std::greater<int> > q;
        for(int i=0,ins=0;i<n;i++){
            scanf("%s",op);
            if(op[0]=='Q'){
                printf("%d\n",q.top());
            }else{
                scanf("%d",&num);
                q.push(num);
                ins++;
                if(ins>k)q.pop();
            }
        }
    }
    return 0;
}
posted @ 2012-08-27 21:46  Burn_E  阅读(113)  评论(0编辑  收藏  举报