#include<bits/stdc++.h>
using namespace std;
bool check(int mid){
int cnt=1,p=a[0];
for(int i=1;i<n;i++)
if(a[i]-p>=mid){
cnt++;
p=a[i];
}
return cnt>=m;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
scanf(“%d”,&a[i]);
sort(a,a+n);
int left=1,right=a[n-1]-a[0],mid;
while(left<right){
mid=(left+right+1)/2;
(left+right+1)/2;
if(check(mid))
left=mid;
else right=mid-1;
}
cout<<left;
return 0;
}
1 个赞
你要创建一大数组
const int MAXN = 100005;
int a[MAXN];
int n, m;
1 个赞