Submission #881475

#TimeUsernameProblemLanguageResultExecution timeMemory
881475theghostkingArt Exhibition (JOI18_art)C++17
100 / 100
955 ms80000 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
    int n;
    cin >> n;
    map<int,int> mp;
    for (int i = 0; i<n; i++){
        int a,b;
        cin >> a >> b;
        mp[a] += b;
    }
    vector<pair<int,int>> vec;
    for (auto u : mp){
        vec.push_back(u);
    }
    sort(vec.begin(),vec.end());
    int sz = vec.size();
    int pf[sz+1];
    pf[0] = 0;
    multiset<int> ms;
    for (int i = 1; i<=sz; i++){
        pf[i] = pf[i-1] + vec[i-1].second;
        ms.insert(pf[i]-vec[i-1].first);
    }
    //set of pf[i] - vec[i-1].first
    //get max of that
    int bst = 0;
    for (int i = 1; i<=sz; i++){
        //start from i
        int cr = vec[i-1].first - pf[i-1];
        auto it = ms.rbegin();
        int val = *it;
        bst = max(bst, cr + val);
        ms.erase(ms.find(pf[i]-vec[i-1].first));
    }
    cout << bst;
    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...