第20954题 单选题
给定的C++程序的运行结果为( )
#include <iostream>
#include <algorithm>

bool check(int n, int a[], int k, int dist) {
 int cnt = 1;
 int 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) {
 std::sort(a, a + n);
 int l = 0;
 int 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;
}

int main() {
 int a[] = {1, 2, 8, 4, 9};
 int n = 5;
 int k = 3;
 std::cout << solve(n, a, k) << std::endl;
 return 0;
}
{{ option.label }}
子题{{ index + 1 }} {{ child.type_label }}
{{ option.label }}
✓ 正确 ◐ 部分正确 ✗ 错误
程序运行统计
暂无判题统计
提交{{ questionInfo.stats ? questionInfo.stats.submit_count : 0 }}次 正确率{{ statsAccuracy }}%
答案解析