http://noi.openjudge.cn/ch0206/162/
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 3333,M=333;
int w[N][N],f[N][M],op[N],n,m;
void get()
{
for(int i=1;i<=n;i++)
{
w[i][i]=0;
for(int j=i+1;j<=n;j++)
{
w[i][j]=w[i][j-1]+op[j]-op[i+j>>1];
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>op[i];
sort(op+1,op+n+1);
get();
memset(f, 0x3f, sizeof f);
f[0][0]=0;
for(int j=1;j<=m;j++)
{
for(int i=1;i<=n;i++)
{
for(int k=0;k<i;k++)
{
f[i][j]=min(f[i][j],f[k][j-1]+w[k+1][i]);
}
}
}
cout<<f[n][m]<<" ";
return 0;
}