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>
using namespace std;
typedef long long ll ;
typedef pair<int , int> pii ;
typedef pair<ll , ll> pll ;
#define ps push_back
#define pb pop_back
#define mp make_pair
#define all(x) x.begin() , x.end()
#define sz(x) (int)x.size()
#define debug(a) cout<<"debug: "<<(#a)<<" = "<<a<<'\n'
const ll maxn = 1e6 + 6 , MX = 1e18+3 ;
ll A , B , S ;
ll n ;
ll l[maxn] , r[maxn] ;
vector<pair<ll , ll > > v ;
ll Gcd(ll a , ll b){
if (b > a) swap(a , b) ;
if (b == 0){
return a ;
}
return Gcd(b , (a%b)) ;
}
void calS(){
ll G = Gcd(A , B+1) ;
ll X = (A / G) ;
if (X > (MX/B)){
S = MX ;
}
else {
S = (X*B) ;
}
}
int main()
{
ios::sync_with_stdio(false) ;
cin.tie(NULL) ;
cout.tie(NULL) ;
cin >> n >> A >> B ;
calS() ;
for (int i = 0 ;i < n; i++){
cin >> l[i] >> r[i] ;
}
ll ans = 0 ;
for (int i = 0 ;i < n ;i++){
ll len = r[i]-l[i]+1 ;
if (len >= S){
cout << S << '\n' ;
return 0 ;
}
ll x = (l[i] % S) ;
ll y = (r[i] % S) ;
if (x <= y){
v.ps(mp(x , y)) ;
}
else {
v.ps(mp(x , S-1)) ;
v.ps(mp(0 , y)) ;
}
}
sort(all(v)) ;
for (int i = 0 ;i < sz(v) ; i++){
int j = i ;
pair<ll , ll > a = v[j] ;
bool flag = true ;
while(flag && j < sz(v)){
if (v[j].first <= a.second+1){
a.second = max(v[j].second , a.second) ;
j ++ ;
}
else{
flag = false ;
}
}
i = j-1 ;
ans += (a.second-a.first+1) ;
}
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... |