题解
2024-12-28 10:26:59
发布于:广东
15阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int A[100005],N,M;
int main(){
cin>>N>>M;
int l=0,r=0;
for(int i=1;i<=N;i++){
cin>>A[i];
l=max(l,A[i]);
r+=A[i];
}
int ans=0;
while(l<=r){
int mid=(l+r)/2;
int 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;
}
这里空空如也
有帮助,赞一个