#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<pair<double,double>>v;
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,a,b;cin>>n>>a>>b;
double tm=((double)a/__gcd(a,b+1))*b;
long long m=1e18+5;
if(tm<m)m=tm;
int can=0;
//cerr<<"m:"<<m<<"\n";
for(int i=0;i<n;i++){
long long l,r;cin>>l>>r;
if(r-l+1>=m)can=1;
l=l%m;
r=r%m;
if(l<=r)v.push_back({l,r});
else v.push_back({0,r}),v.push_back({l,m-1});
}
sort(v.begin(),v.end());
if(can)cout<<m;
else{
int en=-1;
double ans=0;
for(auto [l,r]:v){
//cerr<<"l,r:"<<l<<" "<<r<<"\n";
double st=max((double)en+1,(double)l);
ans+=max(0.0,(double)r-(double)st+1.0);
en=max((double)r,(double)en);
}
cout<<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... |