二分答案 簡單題 ACM-ICPC 2017 Asia HongKong
阿新 • • 發佈:2018-12-31
#include<bits/stdc++.h>
using namespace std;
int a[200000];
int n,k;
bool pan(int s)
{
int rel =0;
int now = a[1];
int num=1;
for(int i=2;i<=n;i++)
{
if(a[i]-now>=s)
{
num++;
now = a[i];
}
if(num>=k)
{
return true;
}
} return false;
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
if(n+k==0)break;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
int l = 1,r = a[n]-a[1];
while(l<r)
{
int m = (l+r+1)/2;
if(pan(m))
{
l = m;
}
else r = m-1;
}
cout<<l<<endl;
}
return 0;
}