Submission #997971

#TimeUsernameProblemLanguageResultExecution timeMemory
997971Qwerty1232Autobahn (COI21_autobahn)C++17
100 / 100
133 ms9164 KiB
#include <bits/stdc++.h> int32_t main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int n, k, x; std::cin >> n >> k >> x; std::vector<std::array<int, 3>> input(n); for (auto& [l, t, r] : input) { std::cin >> l >> t >> r; r++; } std::vector<int> all; for (auto& [l, t, r] : input) { all.push_back(l); all.push_back(l + std::min(t, r - l)); all.push_back(r); } std::sort(all.begin(), all.end()); all.erase(std::unique(all.begin(), all.end()), all.end()); int m = all.size() - 1; std::vector<int> cnt(m + 1), cnt_ch(m + 1); for (auto [l, t, r] : input) { int lc = l + std::min(t, r - l); int it1 = std::lower_bound(all.begin(), all.end(), l) - all.begin(); int it2 = std::lower_bound(all.begin(), all.end(), lc) - all.begin(); int it3 = std::lower_bound(all.begin(), all.end(), r) - all.begin(); cnt[it1]++; cnt[it3]--; cnt_ch[it2]++; cnt_ch[it3]--; } for (int i = 0, c1 = 0, c2 = 0; i < m; i++) { c1 += cnt[i]; cnt[i] = c1; c2 += cnt_ch[i]; cnt_ch[i] = c2; cnt_ch[i] *= cnt[i] >= k; } std::vector<int64_t> prf(m + 1); for (int i = 0; i < m; i++) { prf[i + 1] = prf[i] + cnt_ch[i] * int64_t(all[i + 1] - all[i]); } int64_t ans = 0; auto get_prf = [&](int p) { p = std::max(p, all[0]); auto it = std::upper_bound(all.begin(), all.end(), p) - all.begin(); return prf[it - 1] + cnt_ch[it - 1] * int64_t(p - all[it - 1]); }; auto upd = [&](int l, int r) { int64_t res = get_prf(r) - get_prf(l); ans = std::max(ans, res); }; for (int i = 0; i <= m; i++) { upd(all[i], all[i] + x); upd(all[i] - x, all[i]); } std::cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...