Submission #171602

#TimeUsernameProblemLanguageResultExecution timeMemory
171602rama_pangStrange Device (APIO19_strange_device)C++14
100 / 100
698 ms31444 KiB
#include <bits/stdc++.h> using namespace std; using lint = long long; const lint INF = 1e18 + 100; int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int n; lint A, B; cin >> n >> A >> B; lint g = __gcd(A, B + 1); lint t = 0; if ((A / g) > ((INF + INF) / B)) { t = INF; } else { t = (A / g) * B; } vector<pair<lint, lint>> interval; for (int i = 0; i < n; i++) { lint l, r; cin >> l >> r; if (r - l + 1 >= t) { interval.emplace_back(0, t - 1); } else { l %= t, r %= t; if (l <= r) { interval.emplace_back(l, r); } else { interval.emplace_back(l, t - 1); interval.emplace_back(0, r); } } } sort(begin(interval), end(interval)); lint ans = 0; for (int i = 0; i < (int)interval.size(); i++) { lint l = interval[i].first; lint r = interval[i].second; int nxt = i; while (nxt + 1 < (int)interval.size() && interval[nxt + 1].first <= r) { r = max(r, interval[nxt + 1].second); nxt++; } ans += (r - l + 1); i = nxt; } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...