27 lines
563 B
C++
27 lines
563 B
C++
#include<cstdio>
|
|
#include<cstring>
|
|
int min(int x,int y)
|
|
{
|
|
if (x<y)return x;
|
|
else return y;
|
|
}
|
|
int main()
|
|
{
|
|
int a[101],f[101][101];
|
|
int k,i,j,n,t;
|
|
scanf("%d%d",&n,&k);
|
|
k=k+3;
|
|
for (i=1;i<=n;i++) scanf("%d",&a[i]);
|
|
for (i=1;i<=n-1;i++)
|
|
for(j=i+1;j<=n;j++)
|
|
if (a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;}
|
|
if (k*2>n) printf("-1");
|
|
else
|
|
{for(i=0;i<=n;i++)
|
|
{f[i][0]=0;
|
|
for (j=1;j<=k;j++)f[i][j]=99999999;}
|
|
for (i=2;i<=n;i++)
|
|
for (j=1;j<=k;j++)f[i][j]=min(f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]),f[i-1][j]);
|
|
printf("%d",f[n][k]);}
|
|
}
|
|
|