愤怒的牛
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N=1e5+10;
int a[N];
int n,m;
bool check(int mid){
int last=a[0];
int cnt=1;
for(int i=1;i<n;i++){
if(a[i]-last>=mid){
cnt++;
last=a[i];
}
}
if(cnt>=m) return true;
return false;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int l=1,r=a[n-1];
while(l<r){
int mid=(l+r+1)/2;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<r<<endl;
return 0;
}
同类题型
视频讲解
⬅️ 小蓝与数轴 🏠 00-刷题理模型 ➡️ 排列硬币
💬 评论