#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e6+5;
const long long INF=1e18+9;
long long val[MAXN],L[MAXN],R[MAXN];
int pref[MAXN];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long n,a,b;
cin>>n>>a>>b;
int cnt=0;
long long k=a/__gcd(a,b+1),range=INF;
if(INF/k>=b) range=b*k;
val[++cnt]=0,val[++cnt]=range;
for(int i=1;i<=n;i++)
{
long long l,r;
cin>>l>>r;
val[++cnt]=l%range,val[++cnt]=r%range+1;
L[i]=l,R[i]=r;
}
sort(val+1,val+cnt+1);
for(int i=1;i<=n;i++)
{
long long l=L[i],r=R[i];
long long a=l/range,b=r/range;
if(a==b)
{
pref[lower_bound(val+1,val+cnt+1,l%range)-val]++;
pref[lower_bound(val+1,val+cnt+1,r%range+1)-val]--;
}
else
{
if(a+2<=b) return cout<<range,0;
pref[lower_bound(val+1,val+cnt+1,l%range)-val]++;
pref[lower_bound(val+1,val+cnt+1,r%range+1)-val]--;
pref[1]++,pref[cnt]--;
}
}
long long ans=0;
for(int i=1;i<cnt;i++) ans+=((pref[i]+=pref[i-1])>0)*(val[i+1]-val[i]);
cout<<ans;
}
# | 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... |