#include <bits/stdc++.h>
using namespace std;
bool isP(string s, int l, int r) {
  for (int i = l; i <= (l + r) / 2; i++) {
    if (s[i] != s[r - i + l]) return 0;
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, k;
  cin >> n >> k;
  multiset<long long> st;
  vector<pair<long long, pair<long long, int> > > v(n);
  for (long long int i = 0; i < n; i++) {
    cin >> v[i].first;
    v[i].second.second = i;
  }
  for (long long int i = 0; i < n; i++) cin >> v[i].second.first;
  sort(v.begin(), v.end());
  vector<long long> ans(n);
  long long o = 0;
  for (auto &x : v) {
    ans[x.second.second] = o + x.second.first;
    if (st.size() < k) {
      st.insert(x.second.first);
      o += x.second.first;
    } else if (*(st.begin()) < x.second.first) {
      o -= *(st.begin());
      st.erase(st.find(*(st.begin())));
      st.insert(x.second.first);
      o += x.second.first;
    }
  }
  for (auto &x : ans) cout << x << " ";
}
