Submission
Status:
(PPPPPPPPPPPPPP)(PPPPPPPPPPP)(PPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPPPPPP)(TSSSSSSSSSSSSSSSSSSSSS)
Subtask/Task Score:
{5/5}{7/7}{8/8}{12/12}{16/16}{28/28}{0/24}
Score: 76
User: KantaponZ
Problemset: แคง (Kang)
Language: cpp
Time: 2.090 second
Submitted On: 2025-06-30 13:04:12
#include <bits/stdc++.h>
using namespace std;
#define ll long long
unordered_map<ll,ll> cnt;
unordered_map<ll,bool> del;
vector<ll> C;
priority_queue<pair<ll, ll>> pq;
vector<long long> capsize(vector<int> A, vector<int> B) {
int N = A.size(), M = B.size();
ll sum = 0;
for (int i = 0; i < N; i++) {
A[i] *= 1LL;
sum += A[i];
cnt[A[i]]++;
}
for (auto [k, v] : cnt) {
pq.push({k * v, k});
}
for (int i = 0; i < M; i++) {
if (sum <= 0 || pq.empty()) {
break;
}
B[i] *= 1LL;
if (!del[B[i]]) {
sum += B[i];
cnt[B[i]]++;
pq.push({B[i] * cnt[B[i]], B[i]});
}
if (del[pq.top().second] == false) {
ll x = pq.top().second;
cnt[x] = 0;
sum -= pq.top().first;
del[pq.top().second] = 1;
pq.pop();
} else {
while (!pq.empty() && del[pq.top().second] == true) {
pq.pop();
}
sum -= pq.top().first;
del[pq.top().second] = 1;
pq.pop();
}
C.emplace_back(max(sum, 0 * 1LL));
}
for (int i = C.size(); i < M; i++) {
C.emplace_back(0);
}
return C;
}
/*
int main() {
int n, m;
vector<int> A, B;
cin >> n >> m;
A.resize(n);
B.resize(m);
for(auto &e : A) cin >> e;
for(auto &e : B) cin >> e;
vector<ll> vec = capsize(A, B);
for(auto e : vec) cout << e << " ";
}*/