题解 100% AC
2025-07-24 13:51:50
发布于:江苏
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main(){
int m,n,l=0,r=0,ans=0;cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
l=max(l,a[i]);
r+=a[i];
}
while(l<=r){
int mid=(l+r)/2,sum=0,cnt=1;
for(int i=1;i<=n;i++){
if(sum+a[i]<=mid) sum+=a[i];
else{
sum=a[i];
cnt++;
}
}
if(cnt<=m){
r=mid-1;
ans=mid;
}else l=mid+1;
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个