結果
問題 |
No.649 ここでちょっとQK!
|
ユーザー |
![]() |
提出日時 | 2018-02-10 11:51:37 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 295 ms / 3,000 ms |
コード長 | 1,058 bytes |
コンパイル時間 | 2,719 ms |
コンパイル使用メモリ | 189,324 KB |
実行使用メモリ | 15,872 KB |
最終ジャッジ日時 | 2024-10-13 04:45:01 |
合計ジャッジ時間 | 8,750 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 32 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for (int (i)=(0);(i)<(int)(n);++(i)) using ll = long long; using P = pair<int, int>; #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #include<ext/pb_ds/tag_and_trait.hpp> using namespace __gnu_pbds; using namespace std; template<class T> void vin(vector<T>& v, int n) { v.resize(n); for (int i = 0; i < n; ++i) { cin >> v[i]; } } template <typename T> using gtree = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; int main() { gtree<pair<ll, ll>> g; int Q, K; cin >> Q >> K; rep(i, Q) { int a; cin >> a; if (a == 1) { ll b; cin >> b; g.insert(make_pair(b, i)); } else { if ((int)g.size() < K) { cout << -1 << endl; continue; } auto itr = g.find_by_order(K-1); cout << (*itr).first << endl; g.erase(itr); } } return 0; }