40分不知道哪里出了问题,求大佬指点
#include <iostream>
using namespace std;
long long le=1,re=0,ans=1e18;
long long a[100005];
int l,k;
int f(long long x){
long long sum=0;
long long ki=0;
for(int i=1;i<=l;i++){
sum+=a[i];
if(sum<0)sum=0;
if(sum>=x){
ki++;
sum=0;
}
if(ki>k)return 2;//n大了
}
if(ki<k)return 0;//n小了
return 1;
}
int main(){
cin>>l>>k;
for(int i=1;i<=l;i++){
cin>>a[i];
re=max(re,a[i]);
}
le=1;int t=re;
while(le<=re){
long long mid=(le+re)/2;
if(f(mid)==2){
le=mid+1;
}else if(f(mid)==0){
re=mid-1;
}else{
ans=min(ans,mid);
re=mid-1;
}
// cout<<ans<<" ";
// cout<<mid<<"*";
}
if(ans==1e18){
cout<<-1;return 0;
}
cout<<ans<<" ";
ans=0;
le=1;re=t;
while(le<=re){
long long mid=(le+re)/2;
if(f(mid)==2){
le=mid+1;
}else if(f(mid)==0){
re=mid-1;
}else{
ans=max(ans,mid);
le=mid+1;
}
}
cout<<ans;
return 0;
}