Submission #393918

#TimeUsernameProblemLanguageResultExecution timeMemory
393918ritul_kr_singhStrange Device (APIO19_strange_device)C++17
100 / 100
585 ms53400 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define sp << ' ' << #define nl << '\n' const int INF = 1e18; signed main(){ cin.tie(0)->sync_with_stdio(0); int n, A, B, l, r; cin >> n >> A >> B; int g = A / __gcd(A, B + 1LL); if(g > (INF + 5LL) / B) g = INF + 5; else g *= B; vector<array<int, 2>> q; bool all = false; while(n--){ cin >> l >> r; int lm = l % g, rm = r % g; // if(l + (g - lm) <= r) q.push_back({lm, g-1}), q.push_back({0, rm}); // else q.push_back({lm, rm}); all = all or (r - l + 1LL >= g); if(lm <= rm) q.push_back({lm, rm}); else q.push_back({lm, g-1LL}), q.push_back({0, rm}); } int res = 0; l = -1, r = -2; sort(q.begin(), q.end()); for(auto &i : q){ if(r < i[0]){ res += r - l + 1LL; l = i[0], r = i[1]; }else r = max(r, i[1]); } res += r - l + 1LL; if(all) res = g; cout << res; }
#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...