传输
  • 板块灌水区
  • 楼主Yuyaoshuo0211
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/28 10:06
  • 上次更新2024/7/28 10:36:37
查看原帖
传输
1139331
Yuyaoshuo0211楼主2024/7/28 10:06
#include<bits/stdc++.h>
using namespace std;
const int Maxx=1e5+5;
int a[Maxx];
int n,m,c;
bool check(int mid){
	int sum=1;
	int last=a[0];
	int now=0;
	for(int i=0;i<n;i++){
		now++;
		if(now>c||a[i]-last>mid){
			sum++;
			last=a[i];
			now=1;
		}
	}
	return (sum<=m);
}
int main(){
    cin>>n>>m>>c;
    for(int i=0;i<n;i++){
    	cin>>a[i];
	}
	sort(a,a+n);
	int l=0,r=a[n-1]-a[0];
	int res=-1;
	while(l<r){
		int mid=(l+r)/2;
		if(check(mid)==true){
			res=mid;
			r=mid;
		}else{
			l=mid+1;
		}
	}
	cout<<res;
    return 0;
}
2024/7/28 10:06
加载中...