#include<stdio.h>
#include<stdlib.h>
#define N 100005
int a[N],n,c;
int judge(int x)
{
int i,count=1,t=a[0];
for(i=1;i<n;i++)
if(a[i]-t>=x)
{
count++;t=a[i];
if(count>=c)//可以放下C头牛
return 1;
}
return 0;
}
int fact()//二分搜索最小值
{
int l=0,r=a[n-1]-a[0],mid;
while(l<=r)
{
mid=(l+r)/2;
if(judge(mid))
l=mid+1;
else
r=mid-1;
}
return l-1;
}
int cmp(const void *a,const void *b)
{
return (*(int *)a-*(int *)b);
}
int main()
{
while(~scanf("%d%d",&n,&c))
{
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
printf("%d\n",fact());
}
return 0;
}
nyoj586 疯牛
最新推荐文章于 2019-11-11 20:17:40 发布