제출 #1353275

#제출 시각아이디문제언어결과실행 시간메모리
1353275njoopSails (IOI07_sails)C++20
0 / 100
26 ms2336 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main() {
    int n, tot=0, ans=0;
    cin >> n;
    vector<int> li, cnt(n+2, 0);
    for(int i=1; i<=n; i++) {
        int h, sa;
        cin >> h >> sa;
        tot += sa;
        cnt[h]++;
    }
    for(int i=n; i>=1; i--) {
        cnt[i] += cnt[i+1];
    }
    int l=0, r=n, tt=0;
    while(l < r) {
        int mid = (l+r)/2, tt=0;
        for(int i=1; i<=n; i++) tt += min(cnt[i], mid);
        if(tt > tot) r = mid;
        else l = mid+1;
    }
    for(int i=1; i<=n; i++) {
        li.push_back(min(cnt[i], l+1));
        tt += min(cnt[i], l+1);
    }
    sort(li.begin(), li.end());
    for(int i=n-1; i>=0; i--) {
        if(tt > tot) {
            tt--;
            li[i]--;
        }
    }
    for(auto i: li) {
        ans += i*(i-1)/2;
    }
    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...