poj 3258 River Hopscotch 二分搜索极值

来源:互联网 发布:300533 冰川网络 编辑:程序博客网 时间:2024/06/04 18:51
//poj 3258//sep9#include <iostream>#include <algorithm>using namespace std;int L,N,M;int a[50012],b[50012];bool judge(int mid){int i=0,sum=0;while(i<=N){if(b[i]>=mid){++i;continue;}int tmp=b[i];while(tmp<mid){++i;if(i>N)return false;++sum;if(sum>M)return false;tmp+=b[i];}++i;}return true;}int main(){scanf("%d%d%d",&L,&N,&M);for(int i=0;i<N;++i)scanf("%d",&a[i]);sort(a,a+N);a[N]=L;for(int i=1;i<=N;++i)b[i]=a[i]-a[i-1];b[0]=a[0];int l=0,r=L+1,ans;while(l<r){int mid=(l+r)/2;if(judge(mid)){ans=mid;l=mid+1;}elser=mid;}printf("%d\n",ans);return 0;} 

0 0