eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Лицарі багатокутного столу

Лицарі багатокутного столу

На відміну від Лицарів Круглого Столу, Лицарі Багатокутного Столу не виділяються благородством і з радістю вб'ють один іншого. Проте, кожний лицар володіє своєю силою, і один лицар може вбити іншого тільки якщо його сила більша, ніж сила жертви. Проте, навіть такого лицаря буде мучити совість, тому лицар може вбити максимум k інших людей.

Також, у кожного лицаря є певна кількість монет. При вбивстві лицар може забрати монети своєї жертви.

Кожний лицар задумався: а яка найбільша кількість монет може в нього бути, якщо вбивати інших лицарів буде тільки він.

Вам необхідно відповісти на це питання для кожного лицаря.

Вхідні дані:

Перший рядок містить два числа n і k (1n105, 0 ≤ k ≤ min(n-1, 30)) – кількість лицарів і число k, описане в умові.

В другому рядку знаходиться n чисел p[1, p2pn (1pi109) – сили лицарів. Всі p_i різні.

В третьому рядку знаходиться n чисел c1, c2cn (1ci109) – кількість монет у лицарів.

Вихідні дані:

Виведіть n чисел – найбільшу кількість монет у кожного лицаря.

Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
4 2
4 5 9 7
1 2 11 33
Вихідні дані #1
1 3 46 36
Вхідні дані #2
5 1
1 2 3 4 5
1 2 3 4 5
Вихідні дані #2
1 3 5 7 9
Вхідні дані #3
1 0
2
3
Вихідні дані #3
3