Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)
Total Submission(s): 8280 Accepted Submission(s): 3272
8 3 I 1 I 2 I 3 Q I 5 Q I 4 Q
1 2 3HintXiao Ming won't ask Xiao Bao the kth great number when the number of the written number is smaller than k. (1=<k<=n<=1000000).
问题描述
小明和小宝正在玩一个简单的数字游戏。在一个回合内,小明写下一个数字或者问小宝第k大的数是几。因为小明写的数太多了,小宝觉得有些晕。现在,试着帮帮小宝。
输入
有多组测试数据。对于每组测试数据,首行的输入包含两个正整数(positive integer)n和k。下面有n行。如果小明决定写数字,那么在数字之前会有一个I。如果小明选择问小宝,那么将有Q,然后你需要输出第k大的数字。
输出
输出由一个整数组成,表示最大数。
注意:当写下的数字数目小于k的时候小明不会提问。
这道题还是需要清空队列的。另外,这里不要用ch来接收,太麻烦了。。
#include<stdio.h> #include<queue> using namespace std; priority_queue <int,vector<int>,greater<int> > q; int main(){ int n,k,a; char ch[5]; while(~scanf("%d%d",&n,&k)){ while(n--){ scanf("%s",ch); if(ch[0]=='I'){ scanf("%d",&a); if(q.size()>=k){ if(a>q.top()) { q.push(a); q.pop(); } } else q.push(a); } else { printf("%d\n",q.top()); } } while(!q.empty()) q.pop(); } return 0; }