#include "bits/stdc++.h"
using namespace std;
#define fast ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0)
//#define endl '\n'
using ll=__int128;
__int128 read() {
__int128 x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
void print(__int128 x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9) print(x / 10);
putchar(x % 10 + '0');
}
void solve() {
int n;
ll a,b;
n=read();
a =read();
b=read();
ll m = a/gcd(b+1,a)*b;
//vector<pair<ll,ll>> ivals;
vector<pair<ll,bool>> evs;
ll ans = -1;
for (int i =0;i<n;i++){
ll l,r;
l=read();
r=read();
//cin >> l >> r;
if (r-l >= m-1){
ans = m;
continue;
}
//add interval
if (l%m <= r%m){
evs.push_back({l%m,false});
evs.push_back({r%m,true});
} else {
evs.push_back({l%m,false});
evs.push_back({m-1,true});
evs.push_back({0,false});
evs.push_back({r%m,true});
}
}
if (ans!=-1){
print(ans);
return;
}
ans=0;
sort(evs.begin(),evs.end());
int i=0;
int curis = 0;
ll prevst = -1;
while (i<evs.size()){
ll curt= evs[i].first;
bool curty = evs[i].second;
while (i<evs.size() && evs[i].first==curt && evs[i].second==curty){
if (!evs[i].second){
//cout << "start " << curt << endl;
curis++;
} else {
//cout << "end " << curt << endl;
curis--;
}
i++;
}
if (curis == 0){
ans += curt-prevst+1;
prevst=-1;
} else if (prevst==-1){
prevst=curt;
}
//cout << curis << " " << prevst << " " << ans << endl;
}
print(ans);
//cout << ans << endl;
}
signed main() {
fast;
int t=1;
while (t--) solve();
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... |