Codeforces Round #623 (Div. 2) D. Recommendations(优先队列)
题目链接:https://codeforces.com/contest/1315/problem/D
#include <bits/stdc++.h> using ll = long long; using namespace std; priority_queue<int> q; //默认是大顶堆 ll ans, sum, num, i; int main() { int n; cin >> n; pair<int, int> a[n]; for (auto & i : a) cin >> i.first; for (auto & i : a) cin >> i.second; sort(a, a + n); while (!q.empty() || i < n) { if (q.empty()) num = a[i].first; while (i < n && a[i].first == num) { q.push(a[i].second); sum += a[i].second; ++i; } sum -= q.top(), q.pop(); ans += sum, ++num; } cout << ans; }

浙公网安备 33010602011771号