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