链接:http://bailian.openjudge.cn/practice/1064/
思路:二分法,但是题目数据卡了double的精度,所以一定需要把米转化为整数的厘米来算,以后一定要注意精度的问题啊!!!!
代码:
/*************************************************************************
> File Name: wxzg.cpp
> Author:
> Mail:
> Created Time: Fri 03 Aug 2018 08:15:34 PM CST
************************************************************************/
#include<cstdio>
using namespace std;
int a[10001];
int n,m;
bool c(int d){
int sum = 0;
for(int i=0;i<n;++i){
sum+=a[i]/d;
}
return sum>=m;
}
int main(){
scanf("%d%d",&n,&m);
double e;
for(int i=0;i<n;++i){
scanf("%lf",&e);
a[i] = 100*e;
}
int ub = 1e9;
int lb = 0;
while(ub-lb>1){
int mid = (lb+ub)/2;
if(c(mid))lb = mid;
else ub = mid;
}
if(lb<1)printf("0.00\n");
else
printf("%.2f\n",(double)lb/100);
double eee = 14.5*0.01;
printf("%.2f\n",eee);
return 0;
}