70分,求指点
查看原帖
70分,求指点
660776
ananran998楼主2023/1/9 14:12
#include <bits/stdc++.h>
using namespace std;

int l, n, k, a[100001];

bool check(int M) {
	int y = k;
	int pos = 0;
	for (int i = 2; i <= n; i++) {
		if (a[i] - pos <= M)
			pos = a[i];
		else {
			pos += M;
			--i, --y;
		}
	}
	if (y >= 0)
		return true;
	else
		return false;
}

int main() {
	scanf("%d%d%d", &l, &n, &k);
	for (int i = 1; i <= n; i++)
		scanf("%d", &a[i]);
	int L = 0, R = l + 1;
	while (L + 1 < R) {
		int M = (L + R) / 2;
		if (check(M))
			R = M;
		else
			L = M + 1;
	}
	printf("%d\n", L);
	return 0;
}
2023/1/9 14:12
加载中...