#include<bits/stdc++.h>
using namespace std;
int n,k;
int num[100005];
bool check(int mid1)
{
int k0=0;//存当前段数
for(int i=1;i<=n;i++)
{
k0+=(num[i]/mid1);
}
return k0>=k;//如果实际比需要得到的段数多,返回真,分小了,缩左界
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>num[i];
}
int l,r,mid;//二分三巨头
l=0;//左界是最小长度值,若二分后仍等于0则输出0
r=100000000;//右界是最大长度值
while(l<r)
{
mid=(r+l)/2;
if(check(mid)) l=mid+1;
else r=mid-1;//否则分大了,分右界
}
cout<<l-1;
}
by 清辉暮翊晨 @ 2019-02-28 20:39:33
希望更丰富的展现?使用Markdown
by Eason_AC @ 2019-02-28 20:41:26
```cpp
//```
//代码放这里
//```
```
by wjy666 @ 2019-02-28 20:56:38
两行```,中间夹代码
by wjy666 @ 2019-02-28 20:57:09
@[wjy666](/space/show?uid=20821)
by wyk666 @ 2019-05-10 13:29:01
第四个点mid可能为0
整数除以0就RE了
by Fluenc @ 2019-09-01 17:22:28
~~请不要用Markdown来强调头文件的重要性~~
by GoldenFishX @ 2020-01-08 13:41:16
~~希望更丰富的展现?使用Markdown~~
by KALY @ 2020-02-06 14:37:33