二分,中间的mid和右侧表示符合,左侧的表示不符合
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[200000];
bool check(double mid)
{
int ans=0;
for(int i=1;i<=n;i++)
{
ans=ans+a[i]/mid;
}
if(ans<m)
{
return false;
}
return true;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
double l=0;
double r=1e9;
while(r-l>0.001)
{
double mid=(l+r)/2;
if(check(mid))l=mid;
else r=mid;
}
printf("%.2lf",r);
}