80求助
查看原帖
80求助
1112027
Alananan楼主2024/6/1 16:06
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<queue>
#include<string>
#include<vector>
using namespace std;
const int N = 1e5+10;
int L,n,k,a[N],maxx = -1,c;
bool check(int x){
	int cnt = 0;
	for(int i = 1;i <= n;i++){
		if(a[i] - a[i-1] > x){
			cnt += ((a[i] - a[i-1]) / x); 
			if((a[i]) - a[i-1] % x == 0) cnt--;
		}
	}
	return cnt <= k;
}
int main(){
	scanf("%d%d%d",&L ,&n,&k);
	for(int i = 1;i <= n;i++){
		scanf("%d",&a[i]);
	}
	a[++n]=L;
	int l = 1,r = L,mid;
	while(l < r){
		mid = (l + r) / 2;
		if(check(mid)) r = mid;
		else l = mid+1;
	}
	
	printf("%d",l);
}

80 求助

2024/6/1 16:06
加载中...