比赛 exam 评测结果 AAAAAAAAAA
题目名称 跳石头 最终得分 100
用户昵称 liuyu 运行时间 0.032 s
代码语言 C++ 内存使用 0.50 MiB
提交时间 2017-07-04 08:28:37
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int l,n,m,mid,s[50000+10],k,last;
int lc=1e9,rc=0,ans=0;
int main()
{
	freopen("2015stone.in","r",stdin);
	freopen("2015stone.out","w",stdout);
	scanf("%d%d%d",&l,&n,&m);
	for(int i=1;i<=n;i++)
	  scanf("%d",&s[i]);
	s[n+1]=l;
//	for(int i=1;i<=n+1;i++)
//	{
//		lc=min(lc,s[i]-s[i-1]);
//		rc=max(rc,s[i]-s[i-1]);
//	}
    lc=0,rc=l;
	while(lc<=rc){
		k=0;last=0;
		mid=lc+(rc-lc)/2;
		for(int i=1;i<=n+1;i++)
		{
			if(s[i]-s[last]<mid)k++;
			else last=i;
		}
		if(k<=m){
			ans=mid;lc=mid+1;
		}
		else rc=mid-1;
	}
	printf("%d\n",ans);
	return 0;
}