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;
using ll = long long;
using i128 = __int128;
constexpr int INF = numeric_limits<int>::max() / 2;
constexpr ll INFLL = numeric_limits<ll>::max() / 2;
template<class T>
istream &operator>>(istream &is, vector<T> &a) {
for (auto &i : a) {
is >> i;
}
return is;
}
#ifdef __APPLE__
#include "../../debug.h"
#else
#define debug(...) 42
#endif
int main() {
cin.tie(0)->sync_with_stdio(0);
#ifdef __APPLE__
freopen("input.txt", "r", stdin);
#endif
int n;
ll a, b;
cin >> n >> a >> b;
vector<pair<ll, ll>> lr;
i128 len = ((i128) a * (i128) b) / gcd(a, b + 1);
for (int i = 0; i < n; ++i) {
ll l, r;
cin >> l >> r;
if (l == r) {
lr.push_back({l % len, r % len});
continue;
}
if (r - l + 1 >= len) {
lr.push_back({0, len - 1});
continue;
}
l %= len;
r %= len;
if (l < r) {
lr.push_back({l, r});
} else {
lr.push_back({l, len - 1});
lr.push_back({0, r});
}
}
vector<pair<ll, int>> segs;
for (auto [l, r] : lr) {
segs.push_back({l, 1});
segs.push_back({r + 1, -1});
}
sort(segs.begin(), segs.end(), [&](const pair<ll, int> &a, const pair<ll, int> &b) {
return a.first < b.first || (a.first == b.first && a.second > b.second);
});
ll ans = 0;
{
int balance = 0, curl = 0, curr = 0;
for (auto [x, t] : segs) {
balance += t;
if (balance == 0) {
ans += segs[curr].first - segs[curl].first;
curl = curr + 1;
}
++curr;
}
}
cout << ans;
}
# | 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... |