12345
2025-11-30 11:21:11
发布于:广东
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100005];
bool check(long long mid){
long long cnt=1,sum=0;
for(int i=1;i<=n;i++){
if(sum+a[i]<=mid){
sum+=a[i];
}
else{
sum=a[i];
cnt++;
}
}
return cnt<=m;
}
int main(){
cin>>n>>m;
long long r=0,l=0,mid,ans=-1;
for(int i=1;i<=n;i++){
cin>>a[i];
r+=a[i];
l=max(a[i],l);
}
while(l<=r){
mid=(l+r)>>1;
if(check(mid)){
r=mid-1;
ans=mid;
}
else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
这里空空如也

有帮助,赞一个