poj 2456
二分答案
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e5+9;
int a[maxn];
int n,m;
bool chk(int tmp)
{
int t=1,ret=1;
for(int i=2;i<=n;i++)
if(a[i]-a[t]>=tmp)
{
t=i;
ret++;
}
if(ret>=m) return true;
else return false;
}
int main()
{
while(scanf("%d %d",&n,&m)!=EOF)
{
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
int l=0,r=1e9+9,mid;
while(l<r)
{
mid=l+r+1>>1;
if(chk(mid)) l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
return 0;
}
浙公网安备 33010602011771号