#include <bits/stdc++.h>
using namespace std;
int n , m , a[100002] , r , l=0;
bool b ( int d ) {
int ans = 1 , cur = 0;
for ( int i = 1; i <= n; i ++ ) {
if ( cur + a[i] > d ) {
cur = 0;
ans ++;
continue;
}
cur += a[i];
}
return ans <= m;
}
int main() {
cin >> n >> m;
for ( int i = 1; i <= n; i ++ ) {
cin >> a[i];
r += a[i];
l = max( l , a[i] );
}
int mid , ans=0;
while ( l <r ) {
if ( b( mid = ( l + r ) >> 1 ) == 1 ) {
ans = mid;
r = mid ;
}
else {
l = mid + 1;
}
}
cout << ans;
return 0;
}
为什么不对