이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |