#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long p[100001];
long long c[100001];
long long odp[100001];
long long odp2[100001];
vector<pair<long long, long long> > v;
map<long long, long long> m;
priority_queue<long long> q;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> p[i];
    m[p[i]] = i;
  }
  for (int i = 0; i < n; i++) cin >> c[i];
  for (int i = 0; i < n; i++) v.push_back(make_pair(p[i], c[i]));
  sort(v.begin(), v.end());
  long long l = 0;
  for (int i = 1; i < n; i++) {
    if (l < k) {
      odp[i] = odp[i - 1] + v[i - 1].second;
      q.push(v[i - 1].second * -1);
      l++;
    } else {
      if (q.size() && v[i - 1].second > (q.top() * -1)) {
        odp[i] = odp[i - 1] + v[i - 1].second + q.top();
        q.pop();
        q.push(-1 * v[i - 1].second);
      } else
        odp[i] = odp[i - 1];
    }
  }
  for (int i = 0; i < n; i++) odp[i] += v[i].second;
  for (int i = 0; i < n; i++) odp2[m[v[i].first]] = odp[i];
  for (int i = 0; i < n; i++) cout << odp2[i] << " ";
  return 0;
}
