hdu 1421

#include"stdio.h"

#include"stdlib.h"

#include"string.h"



int a[2005],dp[2005][1005];



int cmp(const void *a,const void *b)

{

    return *(int*)a-*(int*)b;

}

int min(int a,int b)

{

    return a<b?a:b;

}



int main( )

{

    int n,k,i,j;

    while(~scanf("%d%d",&n,&k))

    {

        for(i=1;i<=n;i++)

            scanf("%d",&a[i]);

        qsort(a+1,n,sizeof(int),cmp);

        for(i=0;i<=n;i++)

            for(j=1;2*j<=n;j++)

                dp[i][j]=0xfffffff;

        for(i=0;i<=n;i++)

            dp[i][0]=0;

        for(i=2;i<=n;i++)

            for(j=1;2*j<=i;j++)

                dp[i][j]=min(dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]),dp[i-1][j]);

        printf("%d\n",dp[n][k]);

    }

    return 0;

}



    

 

 

你可能感兴趣的:(HDU)