提交时间:2024-01-27 22:00:13

运行 ID: 130251

#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; }