n跳绳分成k段,问最长的分法
#include<cstdio>
#include<iostream>
#include<algorithm>
#define eps 1e-7
#include<cmath>
using namespace std;
int n,m;
double arr[100010];
bool jg(double x)
{
int anx=0;
for(int i=1;i<=n;i++)
anx+=(int)(arr[i]/x);
return anx>=m;
}
int main()
{
while(~scanf("%d%d",&n,&m),n)
{
double c=0;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
c+=arr[i];
}
double l=0,r=c/m;
while(fabs(l-r)>eps)
{
double mid = (l+r)/2;
if(jg(mid))
l=mid;
else
r=mid-eps;
}
printf("%.2f\n",r);
}
return 0;
}