比赛 20151207初中练习 评测结果 AAAAAAAAAA
题目名称 跳石头 最终得分 100
用户昵称 1azyReaper 运行时间 0.036 s
代码语言 C++ 内存使用 0.50 MiB
提交时间 2015-12-07 20:44:41
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <cstring>
#define ifs ifstream
#define ofs ofstream
using namespace std;
ifs fin("2015stone.in");
ofs fout("2015stone.out");
int l,n,m;
int stone[50010];
bool judge(int mid)
{
	int now=0;
	int pop=0;
	for(int i=1;i<=n+1;i++)
	{
		if(stone[i]-stone[now]<mid)
			pop++;
		else
		{
			now=i;
		}
		if(pop>m)
			return 0;
	}
	return 1;
}
int main()
{
	fin>>l>>n>>m;
	//memset(stone,0,sizeof(stone));
	for(int i=1;i<=n;i++)
		fin>>stone[i];
	stone[0]=0;
	stone[n+1]=l;
	int l=0,right=1000000005,mid;
	while(l<=right)
	{
		mid=(l+right)/2;
		if(judge(mid))
			l=mid+1;
		else
			right=mid-1;
	}
	fout<<(right+l)/2<<endl;
	return 0;
}