Solution:
木棍合理范围即初始区间是[0,n项和/k],n项和/k是理想情况不考虑木棍分段的最大长度,或者默认用一个比较大的数字开始分也可以。然后二分棍子的长度,根据截得的段数总和来判断是否满足要求。

#include<stdio.h>
int main()
{
    long long n,k,num,i,j,p;
    double l,r,m,a[200005];
    scanf("%lld%lld",&n,&k);
    for(i=0; i<n; i++)
        scanf("%lf",&a[i]);
    l=0.0,r=100000000000.0;
    for(i=0; i<100; i++)
    {
        num=0;
        m=(l+r)/2.0;
        for(j=0; j<n; j++)
            num+=int(a[j]/m);
        if(num>=k)
            l=m;
        else
            r=m;
    }
    if(int(r*1000)%10>4)
        r-=0.01;
    p=r;
    printf("%lld\n",p);
    return 0;
}