# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
125094 | Just_Solve_The_Problem | Strange Device (APIO19_strange_device) | C++11 | 631 ms | 17064 KiB |
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>
#define ll long long
#define fr first
#define sc second
#define Ok puts("ok");
using namespace std;
const int N = (int)1e6 + 7;
ll a, b, gc;
int n;
ll maxn;
int used[N * 2];
ll gcd(ll a, ll b) {
while (b) {
a %= b;
swap(a, b);
}
return a;
}
main() {
scanf("%d %lld %lld", &n, &a, &b);
bool ok = 0;
if (log10(a / gcd(b + 1, a)) + log10(b) > 18) {
ok = 1;
}
maxn = a / gcd(b + 1, a) * b;
ll ans = 0;
ll l, r;
vector<pair<ll, ll>> vec;
for (int i = 1; i <= n; i++) {
scanf("%lld %lld", &l, &r);
if (ok) {
ans += (r - l + 1);
}
if (r - l + 1 >= maxn) {
cout << maxn;
return 0;
}
if (l % maxn > r % maxn) {
vec.push_back({l % maxn, maxn - 1});
vec.push_back({0, r % maxn});
} else {
vec.push_back({l % maxn, r % maxn});
}
//cout << tr.get(0, maxn - 1) << endl;
//cout << l % maxn << ' ' << r % maxn << endl;
}
if (ok) {
cout << ans;
return 0;
}
ans = 0;
sort(vec.begin(), vec.end());
ll cur = -1;
for (int i = 0; i < vec.size(); i++) {
// cout << vec[i].fr << ' ' << vec[i].sc << ' ' << cur << ' ' << ans << endl;
if (vec[i].sc < cur) continue;
ans += (vec[i].sc - max(cur + 1, vec[i].fr) + 1);
cur = max(cur, vec[i].sc);
}
cout << ans << endl;
return 0;
for (ll i = 1; i <= 50; i++) {
cout << i << "| (" << (i + i / b) % a << ", " << i % b << ')' << endl;
}
}
/*
3 3 3
4 4
7 9
17 18
*/
Compilation message (stderr)
# | 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... |