这题目对于我来说还是太难了,理解不了
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
int x[N];
int n,m;
int check(int mid)
{
int cnt =0;
int lst=0;
for(int i=1;i<=n;i++)
{
if(lst&&x[i]-x[lst]<mid)
{
continue;
}
cnt++,lst=i;
}
return cnt;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>x[i];
}
sort(x+1,x+1+n);//对数据进行排序
int l=0,r=1e9+3;
while(l+1!=r)
{
int mid=(l+r)/2;
if(check(mid)>=m)
{
l=mid;
}
else{
r=mid;
}
}
cout<<l<<'\n';
return 0;
}

被折叠的 条评论
为什么被折叠?



