前言:
真就一眼题.
思路:
二分即可.
代码:
#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;
}
京公网安备 11010502036488号