經典二分
AC代碼:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
int n, k;
double a[10005];
bool judge(double x)
{
int cnt = 0;
for(int i = 0; i < n; i++){
cnt += (int)(a[i]/x);
if(cnt >= k) return true;
}
return false;
}
int main()
{
scanf("%d %d", &n, &k);
double maxa = 0;
for(int i = 0; i < n; i++){
scanf("%lf", &a[i]);
maxa = max(maxa, a[i]);
}
double lb = 0, ub = maxa;
for(int i = 0; i < 100; i++){
double mid = (ub + lb)/2.0;
if(judge(mid)) lb = mid;
else ub = mid;
}
printf("%.2f", floor(ub*100)/100);
return 0;
}