二分搜索
#include<iostream>
#include <cmath>
#define N 10005
double pi=acos(-1.0);
int t;
int n,f;
int r;
double pie_v[N];
double sum,v,max_v;
bool test(double x)
{
int f_t(0);
for(int i=0;i!=n;i++){
f_t+=(int)(pie_v[i]/x);
}
if(f_t>=f+1){
return true;
}else{
return false;
}
}
double b_serach()
{
double st=0.0;
double ed=max_v;
double mid=0.0;
while ((ed-st)>1e-6){
mid=(ed-st)/2+st;
if(test(mid)){
st=mid;
}else{
ed=mid;
}
}
return mid;
}
int main()
{
while (std::cin>>t){
for(int i=0;i!=t;i++){
std::cin>>n>>f;
for(int i=0;i!=n;i++){
std::cin>>r;
pie_v[i]=pi*r*r;
sum+=pie_v[i];
}
max_v=sum/f+1;
printf("%.4f\n",b_serach());
memset(pie_v,0,sizeof(pie_v));
sum=v=max_v=0;
}
}
}