求助 上关注
  • 板块题目总版
  • 楼主rainfox
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/21 13:18
  • 上次更新2024/3/21 17:26:55
查看原帖
求助 上关注
1033626
rainfox楼主2024/3/21 13:18

题目

代码
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
const int maxn=1e5+10;
int n,m,a[maxn];
bool check(int k){
	int sum=0,cnt=0;//sum上一个点,cnt人数 
	for(int i=1;i<=n;i++){
		if(a[i]-sum>=k){//如果上一个点不用 
			sum=a[i];
		}
		else cnt++;//人数 
	}
	return cnt > n-m;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);//排序 
	int L=1,R=a[n];
	while(L<R){	
		int mid=L+(R-L)/2;
		if( check(mid) ){
			R=mid-1;//大了 
		} 
		else L=mid+1;//小了 
	}
	cout<<L;
	return 0;
}
2024/3/21 13:18
加载中...