经典题。二分答案。
二分木棍的值mid,遍历一次数组看得到的个数是不是≥所要求的k个,是的话,考虑提高二分下界,即l=mid
否则说明mid过大,考虑下调二分上界,即r=mid

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[1<<21];
int main(){
    int n,k;cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i];
    int l=0,r=2e9;
    while(l+1<r){
        int mid=l+r>>1;
        ll cnt=0;
        for(int i=1;i<=n;i++) cnt+=a[i]/mid;
        if(cnt>=k) l=mid;
        else r=mid;
    }
    cout<<l<<endl;
    return 0;
}