Submission #721620

#TimeUsernameProblemLanguageResultExecution timeMemory
721620GrandTiger1729Strange Device (APIO19_strange_device)C++17
0 / 100
403 ms17528 KiB
#include <bits/stdc++.h> using namespace std; const long long INF = 1e18 + 10; int main(){ cin.tie(0)->sync_with_stdio(0); int n; cin >> n; long long A, B; cin >> A >> B; if ((__int128_t)1 * A * B / __gcd(A, B + 1) >= INF){ long long ans = 0; for (int i = 0; i < n; i++){ long long l, r; cin >> l >> r; ans += r - l + 1; } cout << ans << '\n'; return 0; } long long D = (__int128_t)1 * A * B / __gcd(A, B + 1); if (D == 1){ cout << 1 << '\n'; return 0; } vector<pair<long long, long long>> res; for (int i = 0; i < n; i++){ long long l, r; cin >> l >> r; r++; if (r - l >= D){ cout << D << '\n'; return 0; } long long ll = D * (l / D + bool(l % D)), rr = D * (r / D); // cerr << l << ' ' << r << ' ' << ll << ' ' << rr << endl; if (ll > rr){ res.emplace_back(l, r); }else{ res.emplace_back(l % D, D); res.emplace_back(0, r % D); } } // for (auto &[l, r]: res) // cerr << l << ' ' << r << endl; long long ans = 0; for (auto &[l, r]: res) ans += r - l; 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...