제출 #701270

#제출 시각아이디문제언어결과실행 시간메모리
701270HanksburgerSails (IOI07_sails)C++17
100 / 100
46 ms5108 KiB
#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> a[100005];
multiset<long long> s;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long n, cnt, ans=0;
    cin >> n;
    for (long long i=1; i<=n; i++)
        cin >> a[i].first >> a[i].second;
    sort(a+1, a+n+1);
    for (long long i=1; i<=n; i++)
    {
        auto it=s.lower_bound(a[i].first-a[i].second+1);
        long long l=0, r=a[i].first;
        if (it!=s.begin())
        {
            l=*prev(it);
            s.erase(prev(it));
        }
        if (it!=s.end())
        {
            r=*it;
            s.erase(it);
            s.insert(a[i].first);
        }
        s.insert(l+a[i].second-(a[i].first-r));
    }
    cnt=s.size();
    for (auto it=s.begin(); it!=s.end(); it++)
    {
        if (it==s.begin())
            ans+=cnt*(cnt-1)/2*(*it);
        else
            ans+=cnt*(cnt-1)/2*(*it-*prev(it));
        cnt--;
    }
    cout << ans;
}
#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...