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; }