Submission #171604

#TimeUsernameProblemLanguageResultExecution timeMemory
171604rama_pangStrange Device (APIO19_strange_device)C++14
100 / 100
589 ms17252 KiB
#include <bits/stdc++.h> using namespace std; using lint = long long; const lint INF = 1e18 + 100; int main() { int n; lint A, B; scanf("%d %lld %lld", &n, &A, &B); lint g = __gcd(A, B + 1); lint t = 0; if ((A / g) > (INF / B + 1)) { t = INF; } else { t = (A / g) * B; } vector<pair<lint, lint>> interval; interval.reserve(2 * n); for (int i = 0; i < n; i++) { lint l, r; scanf("%lld %lld", &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; } printf("%lld", ans); return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:9:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %lld %lld", &n, &A, &B);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:25:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld %lld", &l, &r);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...