Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
128594 | 黄恩宁 | 跳石头 | C++ | 通过 | 100 | 15 MS | 440 KB | 615 | 2024-01-25 21:02:18 |
#include<iostream> #include<cstdio> using namespace std; const int NR=50010; int l,n,m,d[NR]; bool check(int x) { int i,s=0,cnt=0; //s表示前一块石头的位置 for(i=1;i<=n+1;i++) if(d[i]-s<x) cnt++; //需要移走一块 else s=d[i]; if(cnt>m) return false; return true; } int main() { int i,left=0,right,ans=0; cin>>l>>n>>m; right=l; for(i=1;i<=n;i++) cin>>d[i]; d[n+1]=l; while(left<=right) { int mid=(left+right)/2; if(check(mid)==true) { ans=max(ans,mid); left=mid+1; } else right=mid-1; } cout<<ans<<endl; return 0; cout<<"KKKKK:"; }