| 比赛 | 
    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;
}