Submission #1214103

#TimeUsernameProblemLanguageResultExecution timeMemory
1214103yogesh_saneSails (IOI07_sails)C++20
100 / 100
54 ms4420 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

int main() {
    int n;
    cin>>n;
    vector<pair<int, int>>masts(n);
    multiset<int> ms;
    for(int i=0; i<n; i++)
        cin>>masts[i].first>>masts[i].second;
    sort(masts.begin(),masts.end());
    ms.insert(0);
    for(int i=0; i < n; i++){
        int h = masts[i].first;
        int k = masts[i].second;
        ms.insert(h);
        auto p = ms.upper_bound(h-k);
        auto q = prev(p);
        int aux = k + *p + *q - h;
        if(q!= ms.begin()) 
            ms.erase(q);
        ms.insert(aux);
        ms.erase(p);
    }
    long long ans=0, cnt=0;
    for(auto it = --ms.end(); it != ms.begin(); it--, cnt++)
        ans += cnt*(*it);
    cout<<ans << '\n';
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...