跳转至

直线上的服务站

预估时间限制:0.5 秒。内存限制:128 MB。

实际时限以标准程序在目标环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。

背景故事

一条直路旁分布着若干住户。规划人员希望设置一些服务站,让所有住户前往最近服务站的路程之和尽可能短。

(本故事由GPT-6重写)

形式化问题描述

数轴上有 \(N\) 个房屋,第 \(i\) 个房屋的坐标为 \(X_i\) .在数轴上设置恰好 \(M\) 个服务站,服务站可以与房屋同坐标。每个房屋关联距离它最近的服务站;若有多个并列最近的站,任选一个。

求所有房屋到所关联服务站的距离之和的最小值。坐标相同的房屋仍分别计入距离和。输入坐标不保证有序。

输入格式

第一行两个整数 \(N,M\) .第二行 \(N\) 个整数 \(X_1,\ldots,X_N\) .

输出格式

输出一行一个整数,表示最小距离和。

样例

样例 1

输入

10 5
1 2 3 6 7 9 11 22 44 50

输出

9

样例 2

输入

4 1
100000000 0 100000000 0

输出

200000000

样例 3

输入

3 3
8 2 8

输出

0

样例解释

第一组可在坐标 \(2,7,22,44,50\) 设置服务站,总距离为九。第二组的最小距离和为 \(200000000\) .第三组给每个房屋设置服务站,总距离为零。

五组房屋与服务站位置

数据范围与保证

\(1\le N\le2000\) , \(1\le M\le\min(1000,N)\) , \(0\le X_i\le10^8\) .

分值比例 额外条件
100% 无额外条件