https://www.luogu.org/problem/show?pid=1182
的确是水题啊;
但是我说过我没1a就要写博客;
尴尬;
话说还是要谨慎啊
#include<cmath>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[100005],ans,n,m;
bool check(int x){
int last=0,sum=0;
for(int i=1;i<=n;i++){
if(a[i]-a[i-1]>x)return 0;
if(a[i]-a[last]>x)last=i-1,sum++;
if(sum>m-1)return 0;
}return 1;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),a[i]+=a[i-1];
int l=0,r=a[n];ans=1e9;
while(r>=l){
int mid=l+r>>1;
if(check(mid)){
ans=min(ans,mid);
r=mid-1;
}else l=mid+1;
}
printf("%d",ans);
}