#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
ll A, B; cin >> A >> B;
ll MOD = A / gcd(B + 1, A);
if (MOD >= 2e18 / B) {
MOD = 2e18;
} else {
MOD *= B;
}
cerr << MOD << '\n';
map<ll, int> mp;
while (n--) {
ll l, r; cin >> l >> r;
if (r - l + 1 >= MOD) {
cout << MOD << '\n';
return 0;
}
l %= MOD;
r %= MOD;
if (l <= r) {
++mp[l];
if (r + 1 != MOD) --mp[r + 1];
} else {
++mp[l];
++mp[0];
--mp[r + 1];
}
}
vector<pair<ll, int>> v;
for (auto& [a, b] : mp) {
v.push_back({a, b});
}
int h = 0;
ll ans = 0;
for (int i = 0; i < v.size(); ++i) {
h += v[i].second;
if (h > 0) {
ans += (i == v.size() - 1 ? MOD : v[i + 1].first) - v[i].first;
}
}
cout << ans << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |