# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
196918 | tincamatei | Strange Device (APIO19_strange_device) | C++14 | 1503 ms | 100272 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>
using namespace std;
const long long INF = 1LL << 62;
long long gcd(long long a, long long b) {
long long r;
while(b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
set<pair<long long, long long> > ranges;
long long insertRange(long long a, long long b) {
set<pair<long long, long long> >::iterator it;
it = ranges.lower_bound(make_pair(a, -INF));
if(it != ranges.begin()) {
set<pair<long long, long long> >::iterator it2;
it2 = it;
it2--;
if(it2->second >= a) {
it--;
a = it->first;
}
}
long long rez = 0LL;
vector<pair<long long, long long> > toErase;
while(it != ranges.end() && it->first <= b) {
toErase.push_back(*it);
rez = rez - (it->second - it->first + 1);
b = max(b, it->second);
it++;
}
for(auto it: toErase)
ranges.erase(it);
ranges.insert(make_pair(a, b));
rez = rez + b - a + 1;
return rez;
}
int main() {
int n;
long long A, B, loopSize, xSkip, convolutions;
scanf("%d%lld%lld", &n, &A, &B);
xSkip = B % A + 1;
convolutions = A / gcd(A, xSkip);
if(convolutions <= INF / B)
loopSize = B * convolutions;
else
loopSize = INF;
long long rez = 0LL;
for(int i = 0; i < n; ++i) {
long long l, r;
scanf("%lld%lld", &l, &r);
if(r - l + 1 >= loopSize)
rez = rez + insertRange(0, loopSize - 1);
else {
l = l % loopSize;
r = r % loopSize;
if(r >= l)
rez = rez + insertRange(l, r);
else {
rez = rez + insertRange(0, r) +
insertRange(l, loopSize - 1);
}
}
}
printf("%lld\n", rez);
return 0;
}
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... |