站外题求调*2

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[200001],l=0,r=0,mid;
bool check(int x){
	int ans=1,h=x;
	for(int i=0;i<n;i++){
		if(h<a[i]){
			h=x-a[i];
			ans++;
		}else h-=a[i];
		if(h>0)h--;
	}return ans>m;
}int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i];
		r+=a[i];
	}r+=n-1;
	l=*max_element(a,a+n);
	if(m==1){
		cout<<r;
		return 0;
	}while(l+1<=r){
		mid=l+(r-l)/2;
		if(check(mid))r=mid;
		else l=mid;
	}cout<<l;
	return 0;
}

疑似是check函数写错了,目前WA20分