#include<stdio.h>
#include<algorithm>
using namespace std;
int thing[2001];
int dp[1001][2001];
int main()
{
int n, k;
while (scanf("%d%d", &n, &k) != EOF)
{
for (int i = 1; i <= n; i++)
scanf("%d", &thing[i]);
sort(thing + 1, thing + 1 + n);
for (int i = 0; i <= n; i++)
dp[0][i] = 0;
for (int i = 1; i <= k; i++)
{
for (int j = i * 2; j <= n; j++)
{
if (j > i * 2)
dp[i][j] = dp[i][j - 1];
else
dp[i][j] = INT_MAX;
if (dp[i][j] > dp[i - 1][j - 2] + (thing[j - 1] - thing[j])*(thing[j - 1] - thing[j]))
dp[i][j] = dp[i - 1][j - 2] + (thing[j - 1] - thing[j])*(thing[j - 1] - thing[j]);
}
}
printf("%d", dp[k][n]);
}
return 0;
}
九度OJ(搬宿舍)
最新推荐文章于 2021-07-03 13:47:41 发布