1 条题解
-
0
#include #include #include using namespace std;
int N, C;
bool canPlace(int d, vector& x) { int count = 1; // 第一头牛放在第一个隔间 int lastPos = x[0];
for (int i = 1; i < N; i++) { if (x[i] - lastPos >= d) { count++; lastPos = x[i]; } if (count >= C) return true; } return count >= C;}
int main() { cin >> N >> C; vector x(N); for (int i = 0; i < N; i++) { cin >> x[i]; }
sort(x.begin(), x.end()); int left = 0, right = x[N-1] - x[0]; while (left < right) { int mid = left + (right - left + 1) / 2; if (canPlace(mid, x)) { left = mid; } else { right = mid - 1; } } cout << left << endl; return 0;}
- 1
信息
- ID
- 14545
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 15
- 已通过
- 2
- 上传者