60分求助
查看原帖
60分求助
1378097
zjinyi楼主2024/10/27 21:07

我的代码(60分):

#include <iostream>
using namespace std;

int L, n, m, l, r, maxn, mid, ans;
int d[50002];

bool check(int x)
{
	int cnt = 0, last = 0;
	for (int i = 1; i <= n + 1; ++i)
	{
		if (d[i] - last < x)
		{
			cnt += 1;
		}
		else
		{
			last = d[i];
		}
	}
	return cnt <= m;
}

int main()
{
	cin >> L >> n >> m;
	for (int i = 1; i < n; ++i)
	{
		cin >> d[i];
	}
	d[n + 1] = L;
	l = 1;
	r = L + 1;
	while (l <= r)
	{
		mid = (l + r) / 2;
		if (check(mid) == true)
		{
			l = mid + 1;
			ans = mid;
		}
		else
		{
			r = mid - 1;
		}
	}
	cout << ans;
	
	return 0;
}
2024/10/27 21:07
加载中...