結果
| 問題 |
No.649 ここでちょっとQK!
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-03-14 00:58:59 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 74 ms / 3,000 ms |
| コード長 | 1,398 bytes |
| コンパイル時間 | 1,854 ms |
| コンパイル使用メモリ | 171,468 KB |
| 実行使用メモリ | 6,044 KB |
| 最終ジャッジ日時 | 2024-11-24 12:44:30 |
| 合計ジャッジ時間 | 6,008 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define fi first
#define se second
#define dbg(x) cout<<#x" = "<<((x))<<endl
template<class T,class U> ostream& operator<<(ostream& o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;}
template<class T> ostream& operator<<(ostream& o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}
int main(){
int Q,K;
scanf(" %d %d", &Q, &K);
priority_queue<ll> small;
priority_queue<ll, vector<ll>, greater<ll>> large;
while(Q--){
int q;
scanf(" %d", &q);
if(q==1){
ll v;
scanf(" %lld", &v);
if(small.size()<K) small.push(v);
else{
if(small.top()>v){
large.push(small.top());
small.pop();
small.push(v);
}
else large.push(v);
}
}
else{
ll ans = -1;
if(small.size() == K){
ans = small.top();
small.pop();
if(!large.empty()){
small.push(large.top());
large.pop();
}
}
printf("%lld\n", ans);
}
}
return 0;
}