30分萌新求助
查看原帖
30分萌新求助
158878
B1ade_楼主2022/2/10 15:17

code:

#include<bits/stdc++.h>
using namespace std;
int x,n,m;
int rock[50001];
bool check(int len)
{
	int mv=m;
	for (int i=1;i<=n;++i)
	{
		int k=1;
		while (rock[i+k]-rock[i]<len&&i+k<=n+1)
		{
			--mv;
			++k;
			if (mv<0) return false;
		}
	}
	if (mv<0) return false;
	else return true;
}
int main()
{
	cin>>x>>n>>m;
	for (int i=1;i<=n;++i) cin>>rock[i];
	rock[n+1]=x;
	int l=1,r=x;
	int ans;
	while (l<=r)
	{
		int mid=(l+r)/2;
		if (check(mid))
		{
			ans=mid;
			l=mid+1;
		}
		else
		{
			r=mid-1;
		}
	}
	cout<<ans;
	return 0;
}
2022/2/10 15:17
加载中...