제출 #1274821

#제출 시각아이디문제언어결과실행 시간메모리
1274821gustavo_dSails (IOI07_sails)C++20
50 / 100
1096 ms7416 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int MAXN = 1e5;
const int MAXH = 1e5;

ll H[MAXN], qty[MAXN];
ll h[MAXH+1];

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int n; cin >> n;
    for (int i=0; i<n; i++) {
        cin >> H[i] >> qty[i];
        for (int j=H[i]-qty[i]+1; j<=H[i]; j++) {
            h[j]++;
        }
    }
    // decrescente
    set<pair<ll, int>> freq; freq.insert({h[1], 1});
    for (int i=2; i<=MAXH; i++) {
        while (h[i] > freq.begin()->first) {
            h[i]--;
            pair<ll, int> tmp = *freq.begin();
            tmp.first++;
            freq.erase(freq.begin());
            freq.insert(tmp);
        }
        freq.insert({h[i], i});
    }

    ll ans = 0;
    for (auto [f, i] : freq) {
        // if (f == 0) continue;
        // cout << i << " com " << f << endl;
        ans += f*(f-1)/2;
    }
    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...