1155: 邮局

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:22 解决:6

题目描述

一些村庄建在一条笔直的高速公路边上。我们用一条坐标轴来描述这条高速公路,每一个村庄的坐标都是整数,没有两个村庄坐标相同。两个村庄间的距离,定义为它们的坐标值差的绝对值。我们需要在一些村庄建立邮局.当然,并不是每一个村庄都必须建立邮局,邮局必须被建在村庄里,因此它的坐标和它所在村庄坐标相同。每个村庄便用离它最近的那个邮局,建立这些邮局的原则是:所有村庄到各自所使用的邮局的距离总和最小。
你的任务是编写一个程序,在给写了每个村庄的坐标和将要建立的邮局数之后,按照上述原则,合理地选择这些邮局的位置。

输入

输入的每一行包含两个整数;第一个整数是村庄的数目v(1<=v<=300);第二个整数是将建立的邮局数p(1<=p<=30且p<=v)。
第二行递增顺序列出了v个整数。这v 个整数分别表示了各村庄的位置坐标。对于每一个位置坐标x,1<=x<=10000。

输出

第一行是一个整数S,所表示你所求出的所有村庄到距离它最近的邮局的距离总和。相应地,文件的第二行按照递增顺序列出了P个整数,分别表示你所求出的每个邮局的建立位置。虽然对于同一个S,可能会有多种邮局建立的方案以,但只需输出其中的一种。

样例输入 复制

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

样例输出 复制

9
2 7 22 44 50