Submission
Status:
(PPPPPPPPPPPPPP)(PPPPPPPPPPP)(PPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPPPPPP)(PPPPPPPPPPPPPPPPPPPPPP)
Subtask/Task Score:
{5/5}{7/7}{8/8}{12/12}{16/16}{28/28}{24/24}
Score: 100
User: exoworldgd
Problemset: แคง (Kang)
Language: cpp
Time: 1.231 second
Submitted On: 2025-11-09 00:08:01
#pragma GCC optimize("O5,unroll-loops,inline")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#include "kang.h"
#include <bits/stdc++.h>
#define ll long long
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
using namespace std;
const ll inf = LLONG_MAX, mod = 1e9+7, maxn = 1e6+1;
vector<ll> capsize(vector<int> a, vector<int> b) {
ll n=a.size(),m=b.size(),sum=0;
vector<int> all = a;
all.insert(all.end(),b.begin(),b.end()),sort(all.begin(),all.end()), all.erase(unique(all.begin(),all.end()),all.end());
int sz = all.size();
unordered_map<int,int> idx;
idx.reserve(sz);
for (int i = 0; i < sz; i++) idx[all[i]] = i;
ll cnt[sz]={}, disc[sz]={};
for (int i : a) cnt[idx[i]]++, sum += i;
vector<ll> res(m);
priority_queue<pair<ll,int>> pq;
for (int i = 0; i < sz; i++) if (cnt[i]) pq.emplace(cnt[i]*(ll)all[i], i);
vector<int> bid(m);
for (int i = 0; i < m; i++) bid[i] = idx[b[i]];
for (int i = 0; i < m; i++) {
int id = bid[i];
if (!disc[id]) sum += b[i], cnt[id]++, pq.emplace(cnt[id]*(ll)all[id], id);
while (!pq.empty()) {
auto [l,r] = pq.top(); pq.pop();
if (disc[r] || cnt[r]*(ll)all[r] != l) continue;
disc[r] = 1, sum -= l;
break;
}
res[i] = sum;
}
return res;
}