//题意:给出农夫在n天中每天的花费,要求把这n天分作m组,
//每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值。
//思路:看到各组最小和最大的,果断上二分。很好的一道二分穷举的题。
#include <stdio.h>
#include <iostream>
using namespace std;
int a[100005];
int n, m;
bool judge(int x){
int cnt = 1, sum = 0;
for(int i = 1; i<=n;i++){
if(sum+a[i]<x){
sum= sum+a[i];
} else{
sum = a[i];
cnt++;
}
}
if(cnt>m) return 0;
else return 1;
}
int main(){
cin>>n>>m;
int low = 0, high = 0,mid;
for(int i = 1; i<=n; i++ ) {
cin>>a[i];
low = max(low,a[i]);
high+=a[i];
}
while(low<high){
mid = (low+high)>>1;
if(judge(mid)) high = mid - 1;
else low = mid + 1;
}
printf("%d\n",low);
return 0;
}