#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000000];
bool check(long long n){
long long ans=0,t=0;
for(int i=1;i<=n;i++){
if(a[i]+t>m){
t=0;
ans++;
}
t+=a[i];
}
return ans>=m;
}
int main(){
long long mx=-0x3f3f3f3f,sum=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
if(a[i]>mx){
mx=a[i];
}
}
long long l=mx,r=sum,t=0;
while(l<=r){
cout<<l<<" "<<r<<" ";
long long mid=(l+r)/2;
cout<<mid<<endl;
if(check(mid)){
t=mid;
l=mid+1;
}
else{
r=mid-1;
}
}
cout<<t;
return 0;
}
有没有dalao帮忙看看
P1182