#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
vector<long long> ans(n);
vector<pair<pair<int, int>, int>> p(n);
for (int i = 0; i < n; i++)
cin >> p[i].first.first;
for (int i = 0; i < n; i++)
{
cin >> p[i].first.second;
p[i].second = i;
}
sort(p.begin(), p.end());
long long mx = 0;
priority_queue<int> q;
for (int i = 0; i < n; i++)
{
mx += p[i].first.second;
q.push(-p[i].first.second);
ans[p[i].second] = mx;
if (q.size() > k)
{
mx += q.top();
q.pop();
}
}
for (int i = 0; i < n; i++)
cout << ans[i] << " ";
return 0;
}
1278B - A and B | 1353D - Constructing the Array |
1269C - Long Beautiful Integer | 1076A - Minimizing the String |
913C - Party Lemonade | 1313A - Fast Food Restaurant |
681A - A Good Contest | 1585F - Non-equal Neighbours |
747A - Display Size | 285A - Slightly Decreasing Permutations |
515C - Drazil and Factorial | 1151E - Number of Components |
1151F - Sonya and Informatics | 556A - Case of the Zeros and Ones |
867A - Between the Offices | 1569A - Balanced Substring |
260A - Adding Digits | 1698C - 3SUM Closure |
1029B - Creating the Contest | 1421A - XORwice |
1029A - Many Equal Substrings | 1675D - Vertical Paths |
1271C - Shawarma Tent | 805A - Fake NP |
1163A - Eating Soup | 787A - The Monster |
807A - Is it rated | 1096A - Find Divisible |
1430C - Numbers on Whiteboard | 1697B - Promo |