#include<iostream>
#include<cstdio>
#include<cmath>
const int MAXN=10000;
const long INF=100000;
double L[MAXN];
int N,K;
int Tdfs(double x)
{
int num=0;
for(int i=0;i<N;i++)
num+=(int)(L[i]/x);
return num>=K;
}
int main()
{
int i;
double lb=0,ub=INF,mid;
while(std::cin>>N>>K)
{
for(i=0;i<N;i++)
std::cin>>L[i];
for(i=0;i<100;i++)
{
mid=(lb+ub)/2;
if(Tdfs(mid))
lb=mid;
else
ub=mid;
}
printf("%.2f\n",floor(ub*100)/100);
}
return 0;
}
题意:有N条绳子,分别长Li,现将N条绳子分成K条长度相等绳子,求这K条绳子的最大可分割长度。