This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// In the name of God
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define mp make_pair
typedef long long ll;
const int N = 2e5 + 5;
ll A, B;
int n;
void solve() {
cin >> n >> A >> B;
ll C = __gcd(A, B + 1);
ll Ap = A / C;
ll M;
if ((ll)1e18 / B < Ap) {
M = 1e18 + 1;
}
else
M = B * Ap;
/*ll g = __gcd(Ap, B);
ll M;
if (B > 1e9 || (ll)1e18 / (B * B) < (Ap / g))
M = 1e18 + 1;
else {
M = Ap / g * B * B;
}*/
bool ok = false;
/* for (int i = 1; i < 100; i++) {
if ((i + i / B) % A == 0 && i % B == 0) {
cout << i << endl;
}
}*/
map<ll, int> vec;
for (int i = 0; i < n; i++) {
ll l, r; cin >> l >> r;
if (r - l >= M) {
ok = true;
}
l %= M, r %= M;
vec[l]++;
vec[r + 1]--;
if (l > r) {
vec[0]++;
vec[M]--;
}
}
if (ok) {
cout << M << '\n';
return;
}
ll prv = 0;
ll sum = 0, ans = 0;
for (auto [x, y] : vec) {
bool tmpp = sum;
sum += y;
if (tmpp)
ans += x - prv;
if (sum)
prv = x;
}
cout << ans << '\n';
}
int32_t main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
solve();
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... |