Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
130251 | 黄恩宁 | 上古神器 | C++ | 通过 | 100 | 32 MS | 648 KB | 614 | 2024-01-27 22:00:13 |
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int NR=100010; int n,p,x[NR]; bool check(int k) { int i,cnt=1,s=0; for(i=2;i<=n;i++) { if(s+x[i]-x[i-1]>=k) { cnt++; s=0; } else s=s+x[i]-x[i-1]; } if(cnt<p) return false; return true; } int main() { int i,left=0,right=0,ans=0; cin>>n>>p; for(i=1;i<=n;i++) cin>>x[i]; sort(x+1,x+n+1); right=x[n]; while(left<=right) { int mid=(left+right)/2; if(check(mid)==true) { left=mid+1; ans=max(ans,mid); } else right=mid-1; } cout<<ans<<endl; return 0; }