algorithm_2024/src/20241116/U498420.cpp
2024-11-16 13:08:06 +08:00

49 lines
1.1 KiB
C++

#include <cstdint>
#include <iostream>
#include <istream>
#include <map>
#include <set>
#include <vector>
using ll = int64_t;
using std::cin, std::cout;
const ll maxn = 1e5+5;
ll n, s[maxn];
std::map<ll, std::vector<ll>> hss;
int main(){
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
cin>>n;
for(ll i{1};i<=n;i++){
cin>>s[i];
}
for(ll i{1};i<=n;i++){
ll a;
cin>>a;
if(auto it {hss.find(s[i])}; it==hss.end()){
hss.emplace(s[i], std::vector<ll>{a});
}else{
it->second.emplace_back(a);
}
}
for(ll i{1};i<=n;i++){
ll cnta{};
ll maxs{};
ll ni{i};
auto nowm = hss.begin();
auto nows = hss.begin()->second.begin();
while(ni--){
// cout<<"nows: "<<*nows<<'\n';
cnta+=*nows;
maxs = (*nowm).first;
// cout<<"mxs: "<<maxs<<'\n';
if((++nows)==(*nowm).second.end()){
++nowm;
nows = nowm->second.begin();
}
}
cout<<(maxs*2+cnta)<<'\n';
}
}