Submission #971112

#TimeUsernameProblemLanguageResultExecution timeMemory
971112Roumak77Art Exhibition (JOI18_art)C++17
100 / 100
154 ms18260 KiB
#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC optimize("-Ofast")
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#include <vector>
#include <limits>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <math.h>
using namespace std;

using ll = long long;
/*
void solve(){
    ll n;
    cin >> n;
    vector<pair<ll, ll>> list_n(n, pair<ll, ll>{0, 0});
    for(ll i = 0; i < n; i++){
        cin >> list_n[i].first;
        cin >> list_n[i].second;
    }


    sort(list_n.begin(), list_n.end());

    ll curr_max = -1E15 - 5;
    for(ll i = 0; i < n; i++){
        ll start = list_n[i].first;
        ll curr = 0;
        for(ll j = i; j < n; j++){
            curr += list_n[j].second;
            curr_max = max(curr_max, curr - list_n[j].first + start);
            if(curr - list_n[j].first + start == 4232545716) {
                cout << i << " " << j << endl;
            }
        }
    }
    cout << curr_max << endl;
}

*/
void solve() {
    ll n;
    cin >> n;

    ll curr_max = 0;

    vector<pair<ll, ll>> list_n(n, pair<ll, ll>{0, 0});
    for (ll i = 0; i < n; i++) {
        cin >> list_n[i].first;
        cin >> list_n[i].second;
        curr_max = max(list_n[i].second, curr_max);
    }



    sort(list_n.begin(), list_n.end());

    /*for (ll i = 0; i < n; i++) {
        cout << list_n[i].first << " " << list_n[i].second << endl;

    }*/

    ll curr_min = 0;
    ll curr = 0;
    ll curr_pos = 0;
    for(ll i = 0; i < n; i++){

        if(i == 0){
            curr = -list_n[i].first;
            curr_pos = list_n[i].second - list_n[i].first;

            curr_min = curr;

            curr_max = max(curr_max, curr_pos - curr_min);
            continue;
        }

        curr += list_n[i - 1].first + list_n[i - 1].second - list_n[i].first;
        curr_pos += list_n[i].second + list_n[i - 1].first - list_n[i].first;

        curr_min = min(curr_min, curr);
        curr_max = max(curr_max, curr_pos - curr_min);


    }


    //cout << curr_max;


    cout << curr_max << endl;

}



int main(){

    ios_base::sync_with_stdio(false);
    cout.tie(0);
    cin.tie(0);

    ll t = 1;

    while(t--){
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...