#include <bits/stdc++.h>
using namespace std;
int n;
pair<long long, long long> p[(int)5e5 + 10];
long long pref[(int) 5e5 + 10];
pair<long long, long long> check(long long m) {
int l = 1;
long long ans = 0;
long long sz = 0;
for (int i = 1; i <= n; i++) {
while (p[i].first - p[l].first > m) l++;
if (pref[i] - pref[l - 1] > ans) {
ans = pref[i] - pref[l - 1];
sz = p[i].first - p[l].first;
}
}
return {ans, sz};
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> p[i].first >> p[i].second;
}
sort(p + 1, p + n + 1);
for (int i = 1; i <= n; i++) {
pref[i] = pref[i - 1] + p[i].second;
}
long long l = 0 , r = 1e15 + 50;
for (int j = 1; j <= 200; j++) {
long long m1 = l + (r - l) / 3;
long long m2 = r - (r - l) / 3;
if (pair<long long, long long> r1 = check(m1), r2 = check(m2); r1.first - m1 > r2.first - m2) {
r = m2;
} else {
l = m1;
}
}
long long ans = 0;
for (long long j = l; j <= r; j++) {
auto res = check(j);
ans = max(ans, res.first - res.second);
}
cout << ans;
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... |