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;
const long long INF = 3e18;
int main() {
int n;
long long A, B;
cin >> n >> A >> B;
long long per = A / __gcd(A, B + 1);
if((INF / B) < per) per = INF;
else per = per * B;
vector <pair <long long, long long>> v;
auto addRange = [&] (long long p, long long q) {
v.emplace_back(q, p);
};
for(int i = 0; i < n; i++) {
long long p, q;
cin >> p >> q;
if((q - p + 1) >= per) {
cout << per << endl;
exit(0);
}
p %= per; q %= per;
if(p <= q) {
addRange(p, q);
} else {
addRange(p, per - 1);
addRange(0, q);
}
}
sort(v.begin(), v.end());
long long ans = 0;
long long last = -1;
for(auto i : v) {
long long l = i.second;
long long r = i.first;
ans += r - max(last + 1, l) + 1;
last = r;
}
cout << ans << endl;
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... |