POJ3258 River Hopscotch

时间:2023-12-29 17:49:26

  地址

  别人的代码,自己边界总是控制不好,还不知道哪里错了!思维!这种问题代码越简洁反而越不容易错吧。。

     #include<stdio.h>
#include<algorithm>
typedef long long ll;
using namespace std;
ll n,m,L,a[];
bool bi(ll x){
ll i,cnt=,now=;
for(i=;i<=n;i++){
if(a[i]-a[now]<=x)cnt++;
else now=i;
}
if(L-a[now]<x)return ;
return cnt<=m;
}
int main(){
ll i,l,r,mi;
while(~scanf("%lld%lld%lld",&L,&n,&m)){
l=;r=L;
for(i=;i<=n;i++)
scanf("%lld",&a[i]),
r+=a[i];
sort(a,a+n+);
while(l<r){
mi=l+r>>;
if(bi(mi))l=mi+;
else r=mi;
}
printf("%lld\n",r);
}
return ;
}