记录编号 413968 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015]跳石头 最终得分 100
用户昵称 GravatarHallmeow 是否通过 通过
代码语言 C++ 运行时间 0.033 s
提交时间 2017-06-13 07:24:26 内存使用 0.77 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define pos(i,a,b) for(int i=(a);i<=(b);i++)
#define N 60000
int l,n,m;
int le,ri;
int len[N];
int cnt;
int temp[N];
int check(int ans)
{
    //cout<<"ans="<<ans<<endl;
    cnt=0;
    int last=0;
    pos(i,1,n)
    {
      if(len[i]-last<=ans)
      {
         cnt++;
      }
      else
        last=len[i];
    }
    if(cnt>m)
      return 0;
    else
      return 1;
}
int main()
{
    freopen("2015stone.in","r",stdin);
    freopen("2015stone.out","w",stdout);
    scanf("%d%d%d",&l,&n,&m);
    pos(i,1,n)
      scanf("%d",&len[i]);
    n++;
    len[n]=l;
    //cout<<len[n]<<endl;
    ri=l;
    while(le+1<ri)
    {
       int mid=(le+ri)>>1;
       //cout<<mid<<endl;
       if(check(mid))
         le=mid;
       else
        ri=mid;
    }
    cout<<ri;
    //while(1);
    return 0;
}