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;
typedef long long ll;
ll n, a, b;
pair<ll, ll> t[2000005];
stack<pair<ll, ll>> st;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> a >> b;
ll g = __gcd(a,b+1);
ll k = a/g;
ll tlimit = k * b;
int idx = 0;
for(int i = 0; i < n; i++) {
ll l, r; cin >> l >> r;
l %= tlimit; r %= tlimit;
if(l > r) {
t[idx++] = {l, tlimit-1};
t[idx++] = {0, r};
} else {
t[idx++] = {l, r};
}
}
sort(t, t+idx);
st.push(t[0]);
for(int i = 1; i < idx; i++) {
if(st.top().second < t[i].first)
st.push(t[i]);
else if(st.top().second < t[i].second)
st.top().second = t[i].second;
}
ll ans = 0;
while(!st.empty()) {
ans += 1ll * (st.top().second - st.top().first + 1);
st.pop();
}
cout << ans << '\n';
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... |