結果
| 問題 |
No.649 ここでちょっとQK!
|
| コンテスト | |
| ユーザー |
toyama
|
| 提出日時 | 2019-09-05 22:25:12 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 292 ms / 3,000 ms |
| コード長 | 1,207 bytes |
| コンパイル時間 | 825 ms |
| コンパイル使用メモリ | 89,080 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-22 05:19:14 |
| 合計ジャッジ時間 | 6,745 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
#include <iostream>
#include <cstdio>
#include <cmath>
#include <functional>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
using namespace std;
template<class T, class Compare = less<T> >
using MaxHeap = priority_queue<T, vector<T>, Compare>;
template<class T, class Compare = greater<T> >
using MinHeap = priority_queue<T, vector<T>, Compare>;
using llong = long long;
MaxHeap<llong> find_Kth;
MinHeap<llong> others;
llong Q, K;
llong com, v;
int main() {
cin >> Q >> K;
while(Q--) {
cin >> com;
if (com == 1) {
cin >> v;
find_Kth.push(v);
if (find_Kth.size() > K) {
others.push(find_Kth.top());
find_Kth.pop();
}
}
else if (com == 2) {
if (find_Kth.size() >= K) {
printf("%lld\n", find_Kth.top());
find_Kth.pop();
if (!others.empty()) {
find_Kth.push(others.top());
others.pop();
}
}
else {
printf("%lld\n", -1ll);
}
}
}
return 0;
}
toyama