Description
Input
Output
Sample Input
4 11 8.02 7.43 4.57 5.39
Sample Output
2.00
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
double a[100009];
int fun(double x,int n)
{
int num=0;
for(int i=0;i<n;i++)
{
num+=int(a[i]/x);
}
return num;
}
int main()
{
int n,k;
double mx,mid,sum,ans;
while(cin>>n>>k)
{
sum=0;
for(int i=0;i<n;i++)
{
scanf("%lf",&a[i]);
if(mx<a[i])
mx=a[i];
sum+=a[i];
}
if(sum*100<k)//最多sum/0.01根 长度 0.01米的绳子
{
cout<<"0.00"<<endl;
continue;
}
int le=0,ri=mx*100,ss;//精度问题确实坑死人。。
while(ri>=le)
{
ss=(le+ri)/2;
mid=ss/100.0;
if(fun(mid,n)>=k)
le=ss+1;
else
ri=ss-1;
}
ans=ri/100.0;
printf("%.2lf\n",ans);
}
return 0;
}
原文:http://blog.csdn.net/wust_zjx/article/details/44890449