前言:

真就一眼题.

思路:

二分即可.

代码:

#include <bit.stdc++.h>
using namespace std;
const int N=2e5+50;
int w[N],n,m; 
bool check(int len)
{
    int sum=0;
    if(len==0)    return true;
    for(int i=1;i<=n;i++)
    {
        sum+=w[i]/len;
    }return sum>=m;
}

int main()
{
    int ans=0;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)    scanf("%d",&w[i]);
    int l=0,r=1e9;
    while(l<=r)
    {
        int mid=(l+r)>>1;
        if(check(mid))
        {
            ans=max(ans,mid);
            l=mid+1;    
        }
        else    r=mid-1;
    }printf("%d\n",ans);
    return 0;
}