Submission #995944

#TimeUsernameProblemLanguageResultExecution timeMemory
995944yanbArt Exhibition (JOI18_art)C++14
100 / 100
130 ms31596 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define pii pair<long long, long long>

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<pii> ab(n);
    for (int i = 0; i < n; i++) cin >> ab[i].first >> ab[i].second;
    sort(ab.begin(), ab.end());
    vector<int> a(n), b(n);
    for (int i = 0; i < n; i++) {
        a[i] = ab[i].first;
        b[i] = ab[i].second;
    }

    vector<int> profit(n);
    for (int i = 1; i < n; i++) {
        profit[i] = a[i - 1] - a[i] + b[i];
    }

    vector<int> prefit(n + 1);
    for (int i = 0; i < n; i++) prefit[i + 1] = prefit[i] + profit[i];

    vector<int> smxp(n + 1);
    smxp[n] = prefit[n];
    for (int i = n - 1; i >= 0; i--) smxp[i] = max(smxp[i + 1], prefit[i]); 

    vector<int> rmxp(n + 1);
    for (int i = 0; i < n + 1; i++) rmxp[i] = smxp[i] - prefit[i];

    /*for (int i = 0; i < n; i++) cout << profit[i] << " ";
    cout << "\n";
    for (int i = 0; i < n + 1; i++) cout << prefit[i] << " ";
    cout << "\n";
    for (int i = 0; i < n + 1; i++) cout << smxp[i] << " ";
    cout << "\n";
    for (int i = 0; i < n + 1; i++) cout << rmxp[i] << " ";
    cout << "\n";*/

    int ans = 0;
    for (int i = 0; i < n; i++) ans = max(ans, rmxp[i + 1] + b[i]);
    cout << ans << "\n";
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...