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;
 }