Submission #1270858

#TimeUsernameProblemLanguageResultExecution timeMemory
1270858hamaseArt Exhibition (JOI18_art)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll, ll>
#define fi first
#define se second

ll N, ps[500100]; //s[500100], v[500100], dps[500100][2], dpmin[500100][2], dpmax[500100][2];
pll a[500100];

int main() {
    cin >> N;
    for (int i = 1; i <= N; i++) {
        cin >> a[i].fi >> a[i].se;
    }
    sort(a+1, a+N+1);
    ps[0] = 0;
    for (int i = 1; i <= N; i++) {
        ps[i] = ps[i-1] + a[i].se;
    }
    ll ans = -4e18;
    // for (int i = 1; i <= N; i++) {
    //     for (int j = i; j <= N; j++) {
    //         ans = max(ans, ps[j]-ps[i-1] - (a[j].fi - a[i].fi));
    //     }
    // }
    ll l = 1;
    ll r = N;
    while (l <= r) {
        ans = max(ans, ps[r]-ps[l-1] - (a[r].fi - a[l].fi));

        if (l == r) break;
        else {
            if (ps[r]-ps[l] - (a[r].fi - a[l+1].fi) > ps[r-1]-ps[l-1] - (a[r-1].fi - a[l].fi)) l++;
            else r--;
        }
    }


    cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...