Submission #1237540

#TimeUsernameProblemLanguageResultExecution timeMemory
1237540fauntleroyArt Exhibition (JOI18_art)C++20
100 / 100
118 ms15952 KiB
#include <iostream>
#include <cstdio>
#include <vector>
#include <array>
#include <string>
#include <algorithm>
#include <numeric>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <cmath>
#include <climits>
#include <iomanip>
#include <limits>
#include <tuple>
#include <stack>
#include <bitset>
#include <cstring>
#include <sstream>
#include <functional>
#include <random>
#define int long long
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<pair<int, int>> a(n);
    for (auto& e : a)
        cin >> e.first >> e.second;
    sort(a.begin(), a.end());
    vector<int> pref(n, 0);
    pref[0] = a[0].second;
    for (int i = 1; i < n; ++i)
        pref[i] = pref[i - 1] + a[i].second;
    for (int i = 0; i < n; ++i)
        pref[i] -= a[i].first;
    vector<int> mx(n, -1e18);
    mx[n - 1] = pref[n - 1];
    for (int i = n - 2; i >= 0; --i)
        mx[i] = max(mx[i + 1], pref[i]);

    int ans = 0;
    for (int i = 0; i < n - 1; ++i) {
        int s = a[i].first - (i > 0 ? pref[i - 1] : 0) - (i > 0 ? a[i - 1].first : 0) + mx[i + 1];
        ans = max(ans, s);
    }
    for (int i = 0; i < n; ++i)
        ans = max(ans, a[i].second);
    cout << ans << '\n';
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...