【NOIP2015】跳石头 【二分答案】

来源:互联网 发布:穷怎么打扮知乎 编辑:程序博客网 时间:2024/04/29 03:49

一眼题。

#include<bits/stdc++.h>using namespace std;#define N 50010int L,n,m,a[N];bool check(int x){    int res = m;int last = 0;    for(int i=1;i<=n+1;i++){        if(a[i]-last<x){res--;}        else last = a[i];                       if(res<0)return false;      }       return res>=0;}   int main(){    scanf("%d%d%d",&L,&n,&m);    for(int i=1;i<=n;i++)        scanf("%d",&a[i]);    a[0] = 0,a[n+1] = L;    int l = 0,r = L,mid,ans;    while(l<=r){        mid = (l+r)>>1;        if(check(mid)){            ans = mid;            l = mid+1;        }else{            r = mid-1;          }                   }    printf("%d",ans);       return 0;}
0 0