#include <cstdio>
#include <cmath>
#include <string>
const int MAXL = 10010;
//const double INF = 10010;
double Array[MAXL];
int N, K;
bool C(double x)
{
int num = 0;
for (int i = 0; i < N; ++i) {
num += (int)(Array[i] / x);
}
return num >= K;
}
int main()
{
double maxv = 0;
while (scanf("%d%d", &N, &K) != EOF) {
for (int i = 0; i < N; ++i) {
scanf("%lf", &Array[i]);
if (maxv < Array[i]) maxv = Array[i];
}
double lb = 0, ub = maxv;
for (int i = 0; i < 100; ++i) {
double mid = (lb + ub) / 2;
if (C(mid)) lb = mid;
else ub = mid;
}
printf("%.2f\n", floor(ub * 100) / 100);
}
return 0;
}
wa了好多回,蒟蒻简直不能直视。据说wa在精度上了。输出结果的时候用"%.2f"能过。wa之前用的是"%.2lf",结果改了之后就过了。。。。神犇说是编译器的问题,查后说
poj上的G++输入double用%lf,输出用%f,C++则两者都是%lf orz