二分
c++代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<double> res;
for(int i=0;i<n;i++){
double key;
cin>>key;
res.push_back(key);
}
sort(res.begin(),res.end());
int len=n;
double it=res[len-1]/2;
double hi=it*2;
double lo=0;
while(hi-lo>1e-2) {
int sum=0;
for(int i=0;i<len;i++){
sum=sum+res[i]/it;
}
if(sum>=m){
lo=it;
it=it+hi;
it/=2;
}
else{
hi=it;
it=it+lo;
it/=2;
}
}
printf("%.2f",it);
return 0;
}