結果
問題 |
No.3298 K-th Slime
|
ユーザー |
|
提出日時 | 2025-10-05 14:11:37 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,685 bytes |
コンパイル時間 | 3,088 ms |
コンパイル使用メモリ | 289,532 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-10-05 14:11:51 |
合計ジャッジ時間 | 5,146 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 RE * 4 |
ソースコード
#include <bits/stdc++.h> [[nodiscard]] static inline std::vector<uint_least64_t> solve(const uint_fast32_t N, const uint_fast32_t K, const uint_fast32_t Q, const std::vector<uint_least32_t>& A, const std::vector<std::pair<char, uint_least32_t>>& queries) noexcept { std::priority_queue<uint_least64_t> pq_under; std::priority_queue<uint_least64_t, std::vector<uint_least64_t>, std::greater<uint_least64_t>> pq_over; for (uint_fast32_t i = 0; i < K; ++i) pq_under.push(A[i]); for (uint_fast32_t i = K; i < N; ++i) pq_over.push(A[i]); std::vector<uint_least64_t> ans; ans.reserve(Q); for (const auto& [t, x] : queries) { const auto kth_element = pq_under.top(); switch (t) { case '1': if (x >= kth_element) pq_over.push(x); else pq_over.push(kth_element), pq_under.pop(), pq_under.push(x); break; case '2': if (kth_element + x <= pq_over.top()) pq_under.pop(), pq_under.push(kth_element + x); else pq_under.pop(), pq_under.push(pq_over.top()), pq_over.pop(), pq_over.push(kth_element + x); break; case '3': ans.push_back(kth_element); break; } } return ans; } static inline void output(const std::vector<uint_least64_t>& ans) noexcept { for (const auto& ans : ans) std::cout << ans << '\n'; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); uint_fast32_t N, K, Q; std::cin >> N >> K >> Q; std::vector<uint_least32_t> A(N); std::vector<std::pair<char, uint_least32_t>> queries(Q); for (auto& a : A) std::cin >> a; for (auto& [t, x] : queries) { std::cin >> t; if (t != '3') std::cin >> x; } std::sort(A.begin(), A.end()); output(solve(N, K, Q, A, queries)); return 0; }