二分搜索 :
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <malloc.h>
using namespace std;
int n;
int k;
double p[20000];
int c (double x)
{
int num = 0;
for (int i=1;i<=n;i++)
{
num+= (int)(p[i]/x);
}
return (num >= k);
}
int main ()
{
while (scanf ("%d%d",&n,&k)!=EOF)
{
for (int i=1;i<=n;i++)
scanf ("%lf",&p[i]);
double lf=0,rl=10000000;
double mid;
for (int i=0;i<100;i++)
{
mid = (lf + rl)/2;
if (c(mid))
{
lf=mid;
}
else
{
rl=mid;
}
}
printf("%0.2lf\n",floor(lf * 100)/100);
}
return 0;
}