4 条题解
-
4
#include<bits/stdc++.h> using namespace std; int a[100001]; int n,m; bool search(int dis) { int ans=1;int pre=1; while(ans<m) { int low=lower_bound(a+1,a+1+n,a[pre]+dis)-a; if(low>=n+1) { if(ans<m) return false; else if(ans>=m) return true; } else if(low<=n) { ans++; pre=low; } } return true; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+1+n); int pre;int left=1;int right=a[n]; while(left+1<right) { int mid=(left+right)/2; bool p=search(mid); if(p==false) { right=mid; } else left=mid; } cout<<left; return 0; }
信息
- ID
- 1012
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 43
- 已通过
- 10
- 上传者