哪位大佬看看我是哪里错了??
查看原帖
哪位大佬看看我是哪里错了??
373819
lizichang楼主2020/10/29 22:19

??

#include<iostream>
#include<algorithm>
using namespace std;
int l,k,n,a[10000005];
bool check(int x)
{
	int cnt1=0,cnt=0,k2=k;
	for(int i=0;i<=n;i++)
	{
		if(a[i]==1)	cnt=0;
		if(k2<0)	return false;
		if(cnt==x)
		{
			cnt=0;
			k2--;
		}
		if(a[i]==0)	cnt++;
	}
	return true;
}
int find(int l,int r)
{
	while(r-l>5)
	{
		int mid=(l+r)/2;
		if(check(mid))	r=mid;
		else	l=mid;
	}
	for(int i=l;i<=r;i++)
		if(check(i))	return i;
}
int main()
{
	cin>>l>>n>>k;
	int x;
	for(int i=1;i<=n;i++)
	{
		cin>>x;
		a[x]=1;
	}
	sort(a+1,a+n+1);
	cout<<find(1,l);
	return 0;
}
2020/10/29 22:19
加载中...