求指导
查看原帖
求指导
1327843
如履薄冰楼主2024/9/21 19:42
#include<iostream>
using namespace std;
int l,n,m,A[110000],x=1e9,y=0,mid,ans;
bool check(){
	int begin=0,cnt=0;
	for(int i=1;i<=n;i++){
		if(A[i]-A[begin]<mid){
            cnt++;
        }else{
            begin=i;
        }
	}
	return (cnt<=m);
}
int main(){
	cin>>l>>n>>m;
	A[0]=0;
	A[n+1]=l;
	for(int i=1;i<=n;i++){
		cin>>A[i];
		x=min(x,A[i]-A[i-1]);
	}
	y=l;
	x=1;
	while(x<=y){
		mid=(x+y)/2;
		if(check()){
			x=mid+1;
			ans=mid;
		}else{
			y=mid-1;
		}
	}
	cout<<ans;
	return 0;
}
2024/9/21 19:42
加载中...