#include <bits/stdc++.h>
using namespace std;
using ll = __int128; using pii = pair<ll,ll>;
int main() {
ios_base::sync_with_stdio(false); cin.tie(0);
long long N1,A1,B1; cin >> N1 >> A1 >> B1;
ll N=N1,A=A1,B=B1;
ll P = A*B/gcd(A1,B1+1);
//if A = B+1: augment t by B -> augment x by (B+1)%A=0
//increase by B+1 -> period in A: A/gcd(A,B+1)
vector<pii> upd; //{x,+1} or {x,-1}
for (ll i=0;i<N1;i++) {
long long l1,r1; cin >> l1 >> r1;
ll l=l1,r=r1;
r++;
ll D = l/P;
l -= P*D;
r -= P*D;
if (r>=(2*P)) {
cout << (long long)P << "\n"; exit(0);
} else if (r>=P) {
upd.push_back({l,1});
upd.push_back({P,-1});
upd.push_back({0,1});
upd.push_back({r-P,-1});
} else {
upd.push_back({l,1});
upd.push_back({r,-1});
}
}
sort(upd.begin(),upd.end());
ll cx = 0; ll nact = 0; ll ans = 0;
for (pii p0: upd) {
ll x = p0.first;
if (nact>0) {
ans += (x-cx);
}
nact += p0.second;
cx = x;
}
cout << (long long)ans <<"\n";
}
# | 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... |