Input
Output
Example Input
5 3
1 3 8 5 11
Example Output
7
#include <stdio.h>
#include <stdlib.h>
void q(int d[],int n)//降序排序;
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(d[j]<d[j+1])
{
t=d[j];
d[j]=d[j+1];
d[j+1]=t;
}
}
int main()
{
int m,n,i;
int p[201];
int d[201];
while(~scanf("%d%d",&n,&m))
{
for(i=0;i<n;i++)
{
scanf("%d",&p[i]);
}
q(p,n);//降序排列;
for(i=0;i<n-1;i++)
d[i]=p[i]-p[i+1]-1;//相邻两段间的距离;
q(d,n-1);//距离之间降序;
if(m>=n)
printf("%d\n",n);
else
{
int nline=1;//线段的个数;
int t1=p[0]-p[n-1]+1;//最长距离;
int devide=0;
while((nline<m)&&(d[devide]>0))
{
nline++;
t1=t1-d[devide];//距离减小最长的一段;
devide++;
}
printf("%d\n",t1);
}
}
return 0;
}