#include <cmath>
#include <cstdio>
int n, k;
double l = 0, r = 0x3f3f3f3f, *a;
bool check(double mid);
int main(void)
{
scanf("%d %d", &n, &k);
a = new double[n];
for (int i = 0; i < n; i++)
{
scanf("%lf", &a[i]);
}
while (l + 10e-8 < r)
{
double mid = (l + r) / 2.0;
if (check(mid))
{
l = mid;
}
else
{
r = mid - 10e-9;
}
}
printf("%.2lf", floor(l * 10e11) / 10e11);
return 0;
}
bool check(double mid)
{
int ans = 0;
for (int i = 0; i < n; i++)
{
ans += int(a[i] / mid);
}
return ans >= k;
}
3 个赞
用float试一下
3 个赞