90分,求解
查看原帖
90分,求解
1399815
ryanSB楼主2025/2/5 17:05
#include<iostream>
using namespace std;
int main(){
	long long n,m,L;
	cin>>L>>n>>m;
	long long a[n+1],minn=L+1;
	a[0]=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		minn=min(minn,a[i]-a[i-1]);
	}
	minn=min(L-a[n],minn);
	long long  l=minn,r=L;
	long long  mid=(l+r)/2;
	long long  ans=minn;
	while(l<=r){
		long long sum=0,last=0;
		for(int i=1;i<=n;i++){
			if(a[i]-a[last]<mid){
				sum++;
			}else{
				last=i;
			}
		} 	
		if(L-a[last]<=mid){
			sum++;
		}	
		if(sum>m){
			r=mid-1; 
		}else{
			if(sum<=m){
				ans=mid;
			}
			l=mid+1;
		}
		mid=(l+r)/2;
	}
	cout<<ans;
	return 0;
}
2025/2/5 17:05
加载中...