题目
二分答案的题,对了11个点,错了两个,我感觉是精度问题,但是本蒟蒻看不出哪里错了
#include<bits/stdc++.h>
using namespace std;
long long n,k,Sum;
double sum,a[100011],Max=-1e9;
int zx(double ggg){
Sum=0;
for(int i=1;i<=n;i++)
Sum+=a[i]/ggg;
if(Sum>=k) Max=max(Max,ggg);
return Sum;
}
void zzx(double a,double b){
if(b-a<0.001) return ;
double mid=(a+b)/2;
int Mid=zx(mid),A=zx(a),B=zx(b);
if(Mid>=k) zzx(mid,b);
else zzx(a,mid-0.01);
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
sum/=k*1.00;
zzx(0,sum);
if(Max==-1e9)
{
cout<<"0.00";
return 0;
}
printf("%.2lf",Max);
}