#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
int inf=1e18;
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n,a,b;
cin>>n>>a>>b;
int brp=a/__gcd(a,(b+1));
int mod;
if(inf/brp>=b){
mod=brp*b;
}
else{
mod=-1;
}
int l[n+1],r[n+1];
int tot=0,mx=0;
for(int q=1;q<=n;q++){
cin>>l[q]>>r[q];
tot+=(r[q]-l[q]+1);
mx=max(mx,r[q]-l[q]+1);
}
// cout<<mod<<endl;
if(mod==-1){
cout<<tot<<endl;
}
else{
if(mx>=mod){
cout<<mod<<endl;
}
else{
map<int,int>mp;
for(int q=1;q<=n;q++){
l[q]%=mod,r[q]%=mod;
if(l[q]<=r[q]){
mp[l[q]]++,mp[r[q]+1]--;
}
else{
mp[l[q]]++;mp[mod]--;
mp[0]++,mp[r[q]+1]--;
}
}
int tot=0,prv=0;
int ans=0;
for(auto x : mp){
if(tot){
ans+=(x.fir-prv);
}
tot+=x.sec;
prv=x.fir;
}
cout<<ans<<endl;
}
}
}
| # | 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... |