有一个点答案是1.00,而我是0.99,相差0.01,不超过0.01,为啥不能过?
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n, m;
bool check(double* x, double mid) {
int count = 0;
for (int i = 0; i < n; i++) {
double t = x[i];
while (t >= mid)
t -= mid, count++;
if (count >= m)
return true;
}
return false;
}
int main() {
cin >> n >> m;
double* x = new double[n];
double right = 0;
for (int i = 0; i < n; i++)
cin >> x[i], right = max(right, x[i]);
double left = 0, mid, ans = 0;
while (left <= right) {
//cout << "left=" << left << ", right=" << right << endl;
mid = (left + right) / 2;
if (check(x, mid)) {
ans = max(ans, mid);
left = mid + 1e-10;
}
else
right = mid - 1e-10;
}
//printf("%.2lf", ans);
printf("%.2lf", floor(ans * 100) / 100);
return 0;
}