Submission #1290495

#TimeUsernameProblemLanguageResultExecution timeMemory
1290495mhaerArt Exhibition (JOI18_art)C++20
100 / 100
140 ms16468 KiB
#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>
#define vc vector
#define Fin(a) for (auto& i : a)
#define fih ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define mp(a, b) make_pair(a, b)
#define pb(a) push_back(a)

//#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast") 
//#pragma GCC target("avx,avx2,fma")
using namespace std;

signed main() {
    fih
    int n;
    cin >> n;
    vc<pii> a(n);
    Fin(a) {
        cin >> i.first;
        cin >> i.second;
    }
    sort(a.begin(), a.end());

    deque<int> start(n);
    deque<int> end(n);

    for (int i = 0;i < n-1;i++) {
        start[i+1] = a[i].second - (a[i+1].first - a[i].first) + start[i];
    }
    // start.push_back(0);

    for (int i = n-1;i >= 1;i--) {
        end[i-1] = a[i].second + (a[i-1].first - a[i].first) + end[i];  
    }
    // end.push_front(0);

    for (int i = 1;i <= n;i++) {
        start[i] = min(start[i-1], start[i]);
    }

    for (int i = n-1;i >= 0;i--) {
        end[i] = min(end[i], end[i+1]);
    }

    // Fin(start) cout << i << " ";
    // cout << "\n";

    // Fin(end) cout << i << " ";
    // cout << "\n";

    int sum = 0;
    int min_ = 1000000000000000000;
    int max_ = -1000000000000000000;
    for (auto& i : a) {
        sum += i.second;
        min_ = min(min_, i.first);
        max_ = max(max_, i.first);
    }

    sum -= (max_ - min_);
    // cout << sum << "\n";

    int v = 0;

    for (int i = 0;i < n;i++) {
        v = max(v, -(start[i] + end[i]));
    }

    cout << sum + v << "\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...