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