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;
long long GCD(long long X, long long Y) {
return (Y == 0 ? X : GCD(Y, X % Y));
}
int main() {
int N;
long long A, B;
cin >> N >> A >> B;
vector<pair<long long, long long> > P(N);
for (int i = 0; i < N; i++) {
cin >> P[i].first >> P[i].second;
}
long long C = A / GCD(B + 1, A);
if (B > 2000000000000000000 / C) {
long long ANS = 0;
for (int i = 0; i < N; i++) {
ANS += P[i].second - P[i].first + 1;
}
cout << ANS << endl;
}
else {
long long D = B * C;
for (int i = 0; i < N; i++) {
if (P[i].first / D + 2 <= P[i].second / D) {
cout << D << endl;
return 0;
}
}
vector<pair<long long, long long> > W;
for (int i = 0; i < N; i++) {
if (P[i].first / D == P[i].second / D) W.push_back({ P[i].first % D, P[i].second % D });
else W.push_back({ P[i].first % D, D - 1 }), W.push_back({ 0, P[i].second % D });
}
sort(W.begin(), W.end());
long long ANS = 0;
pair<long long, long long> Cur = { 0, -1 };
for (int i = 0; i < W.size(); i++) {
if (Cur.second < W[i].first) ANS += Cur.second - Cur.first + 1, Cur = W[i];
else Cur.second = max(Cur.second, W[i].second);
}
ANS += Cur.second - Cur.first + 1;
cout << ANS << endl;
}
}
Compilation message (stderr)
strange_device.cpp: In function 'int main()':
strange_device.cpp:40:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < W.size(); i++) {
~~^~~~~~~~~~
# | 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... |