#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5+10;
int len[N];
int n,k;
bool check(int x)
{
ll cnt = 0;
for(int i=1;i<=n;i++)
{
cnt += len[i]/x;
}
return cnt>=k;
}
int main()
{
cin>>n>>k;
int mx = 0;
for(int i=1;i<=n;i++)
{
cin>>len[i];
mx = max(mx,len[i]);
}
int ans = 0;
int l=1,r=mx;
while(l<=r)
{
int mid = (l+r)>>1;
if(check(mid))
{
ans = mid;
l = mid+1;
}
else r = mid-1;
}
cout<<ans<<'\n';
}
经典二分题

京公网安备 11010502036488号