记录编号 374473 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]跳石头 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.039 s
提交时间 2017-02-23 10:41:50 内存使用 0.50 MiB
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define is_num(tmp) (tmp<='9'&tmp>='0')
inline int in()
{
	char tmp(getchar());
	int res(0);
	while(!is_num(tmp))tmp=getchar();
	while(is_num(tmp))
		res=(res<<1)+(res<<3)+(tmp^48),
		tmp=getchar();
	return res; 
}
//#define LOCAL
int L,N,M;
int l,r,mid,ans; 
int cnt,last;
bool ok;
int s[50001];
int main()
{
#ifndef LOCAL
	freopen("2015stone.in","r",stdin);
	freopen("2015stone.out","w",stdout);
#endif
	L=in(),N=in(),M=in();
	for(int i=1;i<=N;++i)
		s[i]=in();
	s[N+1]=L;
	l=0,r=L;
	while(l<=r)
	{
		last=cnt=0,ok=1;
		mid=(l+r>>1);
		for(int i=1;i<=N+1;++i)
		{
			if(s[i]-last<mid)++cnt;
			else last=s[i];
			if(cnt>M){ok=0;break;} 
		}
		if(ok)
		{
			l=mid+1;
			ans=mid;
		}
		else r=mid-1;
	}
	printf("%d",ans);
}