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;
#define ll long long
#define inf 2e18
int main(){
int n; ll a, b, p; cin >> n >> a >> b; map<ll, int> d;
p = a / __gcd(a, b + 1); p = (p >= inf / b) ? inf : p * b;
for (int i = 0; i < n; i++){
ll l, r; cin >> l >> r;
if (r - l + 1 >= p){ d[0]++, d[p]--; continue; }
l %= p; r %= p;
if (l <= r) d[l]++, d[r + 1]--;
else d[0]++, d[r + 1]--, d[l]++, d[p]--;
}
int cnt = 0; ll pre, ans = 0;
for (auto &val : d){
if (cnt) ans += val.first - pre;
cnt += val.second; pre = val.first;
}
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... |