Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) |
两个闲人在玩游戏,每回合A可以写数字或者询问B第k大的数字是啥
我们要做的就是回答第k大的数字是啥
之前各种写都超时啊。。。机房的空调好冷啊。。。。。
这题好早写的我都忘了是啥了。。。。java编译器怎么还没装好啊。。。
反正之前做过这样的题啊,就是sliding window 啊。。。。那玩意儿好像还更难写来着。。。
优先队列里数越小优先值越高要在定义的时候加个greater<int> 啊
具体看代码:
/*
━━━━━┒
┓┏┓┏┓┃μ'sic foever!!
┛┗┛┗┛┃\○/
┓┏┓┏┓┃ /
┛┗┛┗┛┃ノ)
┓┏┓┏┓┃
┛┗┛┗┛┃
┓┏┓┏┓┃
┛┗┛┗┛┃
┓┏┓┏┓┃
┛┗┛┗┛┃
┓┏┓┏┓┃
┃┃┃┃┃┃
┻┻┻┻┻┻
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
const int maxn=1000010;
const int inf=1<<30;
int c[maxn];
int lowbit(int x){
return x&(-x);
}
void update(int x,int val){
while(x<=maxn){
c[x] += val;
x += lowbit(x);
}
}
int getsum(int x){
int sum=0;
while(x>0){
sum += c[x];
x -=lowbit(x);
}
return sum;
}
bool compare(int a,int b){
return a>b;
}
int main(){
int k,n,i,j,number;
string str;
while(~scanf("%d%d",&n,&k)){
priority_queue<int,vector<int>,greater<int> > save;
for(i=1;i<=n;i++){
cin>>str;
if(str=="I"){
scanf("%d",&number);
if(save.size()<k){
save.push(number);
}else{
if(number>save.top()){
save.pop();
save.push(number);
}
}
}else{
printf("%d\n",save.top());
}
}
}
return 0;
}