// https://oj.uz/problem/view/JOI18_art
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int inf = 1e18+10;
const int maxn = 5e5+10;
int N;
pair<int, int> q[maxn];
int ps[maxn];
int maxi[maxn];
int32_t main()
{
cin >> N;
for(int i = 1; i <= N; i++)
{
cin >> q[i].first >> q[i].second;
}
sort(q+1, q+N+1);
q[0].first = q[1].first;
int ans = 0;
for(int i = 1; i <= N; i++)
{
ps[i] = ps[i-1]+q[i].second-(q[i].first-q[i-1].first);
ans = max(ans, q[i].second);
}
maxi[N+1] = -inf;
for(int i = N; i > 0; i--)
{
maxi[i] = max(maxi[i+1], ps[i]);
}
ans = max(ans, maxi[1]);
int vsum = q[1].second;
int asum = q[1].first;
for(int i = 2; i < N; i++)
{
ans = max(ans, maxi[i]-vsum+q[i].first-asum);
vsum += q[i].second;
asum += q[i].first;
}
cout << ans << endl;
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... |