Submission #1196562

#TimeUsernameProblemLanguageResultExecution timeMemory
1196562PetrixSails (IOI07_sails)C++20
100 / 100
54 ms5192 KiB
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;

#define int long long

pair<int,int> v[100001];
multiset<int> s;
signed main()
{
    int n,i,aux,h,k,rasp=0,cnt=0;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>v[i].first>>v[i].second;
    }
    sort(v+1,v+n+1);s.insert(0);
    for(i=1;i<=n;i++){
        h=v[i].first;k=v[i].second;
        s.insert(h);
        auto p=s.upper_bound(h-k);auto q=p;q=prev(q);
        aux=k+*p+*q-h;
        if(q!=s.begin()) s.erase(q);
        s.insert(aux);s.erase(p);

    }
    auto it=s.end();
    while(it!=s.begin()){
        it--;
        rasp+=cnt*(*it);
        cnt++;
    }
    cout<<rasp;
    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...