http://acm.hdu.edu.cn/showproblem.php?pid=4006

第一反应是线段树,不过发现k是固定的。

用STL的优先队列,很爽。

http://blog.chinaunix.net/space.php?uid=533684&do=blog&cuid=2615612

我从上面的博客学到很多STL优先队列的知识,ORZ一个

View Code
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
    int n,k,a;
    char c;
    priority_queue<int, vector<int>, greater<int> > q;//最小堆
    while(~scanf("%d%d%*c",&n,&k))
    {
        while(n--)
        {
            scanf("%c%*c",&c);
            if(c=='I')
            {
                scanf("%d%*c",&a);
                q.push(a);
                if(q.size()>k)
                    q.pop();
            }
            else
                printf("%d\n",q.top());
        }
        while(!q.empty())
            q.pop();
    }
    return 0;
}