AC

 •  4天前


#include <bits/stdc++.h>
using namespace std;

const int MAXN = 50001;
int stone[MAXN], a, n, m;

bool check(int d) {
	int p = 0, ans = 0;
	for (int i = 1; i <= n; i++) {
		if (stone[i] - p < d)
			ans++;
		else
			p = stone[i];
	}
	if (ans <= m)
		return true;
	else
		return false;
}

int main() {
	cin >> a >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> stone[i];
	stone[++n] = a;
	int l = 0, r = a, mid;
	while (l < r) {
		mid = (l + r + 1) / 2;
		if (check(mid))
			l = mid;
		else
			r = mid - 1;
	}
	cout << l;
	return 0;
}


评论:

请先登录,才能进行评论