結果
問題 |
No.3298 K-th Slime
|
ユーザー |
![]() |
提出日時 | 2025-10-05 15:35:14 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,781 bytes |
コンパイル時間 | 3,710 ms |
コンパイル使用メモリ | 258,056 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2025-10-05 15:35:22 |
合計ジャッジ時間 | 6,223 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 8 WA * 17 |
ソースコード
#include<bits/stdc++.h> #include<atcoder/all> #define chmin(x,y) (x) = min((x),(y)) #define chmax(x,y) (x) = max((x),(y)) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define vec vector #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define pb push_back #define eb emplace_back using namespace std; using namespace atcoder; using ll = long long; using ld = long double; const ll mod = 998244353; using mint = modint998244353; const vector<int> dx = {1,0,-1,0}, dy = {0,1,0,-1}; // using Graph = vector<vector<pair<int,ll>>>; using Graph = vector<vector<int>>; int main(){ // input int N,K,Q; cin >> N >> K >> Q; multiset<ll> ms; vector<ll> A(N); rep(i,N){ cin >> A[i]; ms.insert(A[i]); } ms.insert(0LL); ms.insert(9e18); // A.pb(1e18); // A.pb(0LL); sort(all(A)); ll kth = A[K-1]; // solve while(Q--){ int q; cin >> q; // cout << "Type " << q << " " << Q << " more queries " << (ms.find(kth) != ms.end() ? "Yes" : "No") << endl; if(q == 3){ cout << kth << "\n"; } else if(q == 2){ ll y; cin >> y; auto it = ms.lower_bound(kth); auto nxt = next(it); // cout << *it << " " << kth << " " << *nxt << " " << y << endl; if(*nxt > kth + y) kth = kth + y; else kth = *nxt; ms.erase(it); ms.insert(kth+y); // cout << "q = 2:" << kth << endl; } else if(q == 1){ ll x; cin >> x; auto it = ms.lower_bound(kth); auto prv = prev(it); if(kth > x){ if(*prv < x) kth = x; else kth = *prv; } // cout << "q = 1:" << kth << endl; ms.insert(x); } } // output }