题解
2023-06-24 09:03:19
发布于:上海
134阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,m,mx=0,sum=0;
int a[100000];
bool check(int x);
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>mx) mx=a[i];
sum+=a[i];
}
int l=mx,r=sum;
int ans=0;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
r=mid-1;
ans=mid;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
bool check(int x){
int cnt=1;
int temp=a[0];
for(int i=1;i<n;i++){
if(temp+a[i]<=x) temp+=a[i];
else{
cnt++;
temp=a[i];
}
}
return cnt<=m;
}
这里空空如也
有帮助,赞一个