题解
2023-09-30 10:12:00
发布于:安徽
4阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int len,sum;
int n,m;
int a[100005];
bool check(int mid)
{
int now=a[1],tmp=1;
for(int i=2;i<=n;i++)
{
if(now+a[i]<=mid) now+=a[i];
else{
tmp++;
now=a[i];
}
}
if(tmp<=m) return true;
return false;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
len=max(len,a[i]);
sum+=a[i];
}
int l=len,r=sum;
int ans;
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
cout<<ans<<endl;
return 0;
}
这里空空如也
有帮助,赞一个