This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define st first
#define nd second
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define eb emplace_back
#define pp pop_back
#define mp make_pair
using namespace std;
using pii = pair<int, int>;
using ll = long long;
using vi = vector<int>;
using vii = vector<pii>;
void debug(){cerr<<"\n";}
template<typename H, typename... T>
void debug(H h, T... t){
cerr<<h;
if(sizeof...(t)){
cerr<<", ";
}
debug(t...);
}
#define deb(x...) cerr<<#x<<" = ";debug(x);
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
int main(){
int n;
ll a, b;
cin>>n>>a>>b;
if(b>=ll(1e18)/(a/gcd(a, b+1))){
ll s=0;
for(int i=0; i<n; i++){
ll l, r;
cin>>l>>r;
s+=r-l+1;
}
cout<<s;
return 0;
}
ll t=b*(a/__gcd(a, b+1));
vector<pair<ll, int> > V;
for(int i=0; i<n; i++){
ll l, r;
cin>>l>>r;
if(r-l+1>=t){
cout<<t;
return 0;
}
l%=t;
r%=t;
if(l<=r){
V.eb(l, 1);
V.eb(r+1, -1);
}
else{
V.eb(0, 1);
V.eb(r+1, -1);
V.eb(l, 1);
}
}
V.eb(t, 0);
sort(all(V));
ll s=0, prv=0;
int part=0;
for(auto i:V){
if(i.st!=prv){
if(part>0)s+=i.st-prv;
prv=i.st;
}
part+=i.nd;
}
cout<<s;
}
# | 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... |