教科书式的二分
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<climits>
#include<string>
#include<cstdlib>
#include<map>
#include<ctime>
#define MAX 1000000007
#define LL long long
using namespace std;
int n,k,line[100005],l,r,mid;
double lin[100005],ans;
int check(int x)
{
int i,t=0,w;
for(i=1;i<=n;i++)
{
w=line[i]/x;
t+=w;
}
return t;
}
int main()
{
int i;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%lf",&lin[i]);
line[i]=100*lin[i];
r=max(r,line[i]);
}
l=1;
r++;
while(l<=r)
{
mid=(l+r)/2;
if(check(mid)<k) r=mid-1;
else l=mid+1;
}
ans=r/100.0;
printf("%.2lf",ans);
return 0;
}