下面程序的运行结果为(a={1,2,8,4,9}, k=3):
bool check(int n,int a[],int k,int dist){
int cnt=1, last=a[0];
for(int i=1;i<n;i++)
if(a[i]-last>=dist){ cnt++; last=a[i]; }
return cnt>=k;
}
int solve(int n,int a[],int k){
sort(a,a+n);
int l=0, r=a[n-1]-a[0];
while(l<r){
int mid=(l+r+1)/2;
if(check(n,a,k,mid)) l=mid; else r=mid-1;
}
return l;
}
// a={1,2,8,4,9}, n=5, k=3
- A. 2
- B. 3
- C. 4
- D. 5
正确答案:B