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;
#define int long long
const int INF = 2e18 + 7;
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, a, b;
cin >> n >> a >> b;
a /= __gcd(a, b + 1);
int p = INF / b <= a ? INF : a * b;
vector<pair<int, int>> arr;
while (n--) {
int l, r;
cin >> l >> r;
l %= p;
r %= p;
if (l <= r) {
arr.emplace_back(l, 1);
arr.emplace_back(r + 1, -1);
} else {
arr.emplace_back(0, 1);
arr.emplace_back(r + 1, -1);
arr.emplace_back(l, 1);
arr.emplace_back(p, -1);
}
}
sort(arr.begin(), arr.end());
int ans = 0, bal = 0;
for (int i = 0; i + 1 < arr.size(); i++) {
bal += arr[i].second;
if (bal > 0) ans += arr[i + 1].first - arr[i].first;
}
cout << ans;
return 0;
}
Compilation message (stderr)
strange_device.cpp: In function 'int32_t main()':
strange_device.cpp:33:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i + 1 < arr.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... |