100分求调 调必关
查看原帖
100分求调 调必关
919041
xuman楼主2025/7/31 15:59
#include<bits/stdc++.h>
using namespace std;

int a[50010]; 
int b[50010];
int c,n,m;

bool check(int x){
	int k=0;
	for(int i=2;i<=n;i++)b[i]=a[i]-a[i-1];
	b[1]=a[1]-1;
	b[n+1]=c-a[n];
	for(int i=1;i<=n+1;i++){
		if(b[i]<x){
			k++;
			b[i+1]+=b[i];
		}
	}
	//cout<<k<<' ';
	return k<=m;
}

int main(){
	cin>>c>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	if(n==m){
		cout<<c;
		return 0;
	}
	sort(a+1,a+n+1);
	int l=1,r=c,dyx=0;
	//cout<<"dyx";
	while(l<r){
		//cout<<"dyx";
		int mid;
		mid=(l+r)/2;
		if(check(mid)){
			dyx=max(dyx,mid);
			//cout<<dyx<<"dyx";
			l=mid+1;
		}else{
			r=mid;
		}
		//cout<<l<<' '<<mid<<' '<<r<<endl;
	}
	if(!dyx)cout<<l;
	else cout<<dyx;
	return 0;
}

2025/7/31 15:59
加载中...