結果
問題 |
No.1982 [Cherry 4th Tune B] 絶険
|
ユーザー |
![]() |
提出日時 | 2025-06-12 18:10:46 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,280 bytes |
コンパイル時間 | 3,514 ms |
コンパイル使用メモリ | 200,148 KB |
実行使用メモリ | 816,232 KB |
最終ジャッジ日時 | 2025-06-12 18:12:47 |
合計ジャッジ時間 | 9,249 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 MLE * 1 -- * 31 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, K, Q; cin >> N >> K >> Q; vector<vector<pair<long long, int>>> blocks(N + 1); // 1-based indexing for (int k = 0; k < K; ++k) { int L, R, C, H; cin >> L >> R >> C >> H; for (int i = L; i <= R; ++i) { blocks[i].emplace_back(H, C); } } for (int q = 0; q < Q; ++q) { int I, X; cin >> I >> X; long long target = X - 0.5; auto& layers = blocks[I]; if (layers.empty()) { cout << "-1\n"; continue; } vector<long long> prefix = {0}; for (auto [h, c] : layers) { prefix.push_back(prefix.back() + h); } int lo = 1, hi = layers.size(); int ans = -1; while (lo <= hi) { int mid = (lo + hi) / 2; if (prefix[mid] > target) { ans = mid; hi = mid - 1; } else { lo = mid + 1; } } if (ans != -1 && prefix[ans - 1] <= target) { cout << layers[ans - 1].second << '\n'; } else { cout << "-1\n"; } } return 0; }