大佬求助,30分
查看原帖
大佬求助,30分
1313312
zzdkf20081224楼主2024/7/16 08:34
#include<bits/stdc++.h>
using namespace std;
int a[50005];
long long l,n,m;
bool check(int mid){
	int cnt=0;
	int i=0;
	int now=0;
	while(i<n+1){
		i++;
		if(a[i]-a[now]<mid) cnt++;
		else now=i;
	}
	if(cnt>m) return false;
	return true;
}
int main(){

	scanf("%ld%ld%ld",&l,&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	int ri=l,li=0,mid,ans;
	while(li<ri){
		mid=(li+ri)/2;
		if(check(mid)) {
		li=mid+1;ans=mid;
	}
		else ri=mid;
	}
	cout<<ans;
	return 0;
} ```

还是不明白二分到底怎么来判断循环判断和边界
2024/7/16 08:34
加载中...