10805. Будинки та школи


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

На вулиці є \(n\) будинків з номерами \(1,2,…,n\). Відстань між будинками \(a\) і \(b\) дорівнює \(∣a−b∣\). Ви знаєте кількість дітей у кожному будинку.

Ваше завдання створити \(k\) шкіл таким чином, щоб кожна школа була в якомусь будинку. Потім кожна дитина йде до найближчої школи. Яка мінімальна загальна пройдена відстань дітей, якщо ви будете діяти оптимально?

Обмеження

  • \( 1≤k≤n≤3000\)
  • \( 1≤c_i ​ ≤10^9\)

Формат вхідних даних

У першому рядку є два цілі числа \(n\) і \(k\): кількість будинків і кількість шкіл. Будинки пронумеровані \(1,2…,n\).

Після цього є \(n\) цілих чисел \(c_1 ​ ,c_2 ​ ,…,c_n\) ​ : кількість дітей у кожному будинку.

Формат вихідних даних

Вивести шукану мінімальну загальну відстань.

Пояснення:

у будинках 2 і 5 слід розмістити школи.

Приклад вхідних даних

6 2
2 7 1 4 6 4

Приклад вихідних даних

11

Коментарі

Ще немає коментарів.