#include <bits/stdc++.h>
using namespace std;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
long long n,a,b;
cin >> n >> a >> b;
long long lc = a*b;
if(log2(a)+log2(b)>61){
lc=1e18+5;
}
assert(lc>0);
//0->(lc-1)
vector<array<long long,2>>rangs;
for(int i = 0;i<n;i++){
long long l,r;
cin >> l >> r;
long long lmod = l%lc;
long long rmod = r%lc;
long long req = lc-lmod-1;
if(l+req<=r){
//lmod-end is to be added.
rangs.push_back({lmod,lc-1});
}
else{
rangs.push_back({lmod,rmod});
}
l+=req+1;
assert(l%lc==0);
lmod=l%lc;
if(l+lc-1<=r){
rangs.push_back({0,lc-1});
}
else if(l<=r){
rangs.push_back({0,rmod});
}
}
sort(rangs.begin(),rangs.end());
vector<array<long long,2>>ne;
ne.push_back(*rangs.begin());
for(array<long long,2>a:rangs){
if(ne.back()[1]<a[0]){
ne.push_back(a);
}
else{
ne.back()[1]=max(ne.back()[1],a[1]);
}
}
long long ans = 0;
for(array<long long,2>a:ne){
ans+=a[1]-a[0]+1;
}
cout << (long long)ans;
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... |