#include <bits/stdc++.h>
using namespace std;
long long N, M;
long long a[10001];
void f(long long p, long long q)
{
if (p == q)
{
cout << p;
return;
}
long long t = (p + q) / 2;
long long w = 0;
long long k1 = 0;
for (int i = 0; i < N; i++)
{
k1 += a[i];
if (k1 < t)
continue;
else if (k1 > t)
{
w++;
k1 = a[i];
if (i == N - 1)
w++;
}
}
if (w <= M)
{
if (p == q - 1)
{
cout << p;
return;
}
f(p, t);
}
else
{
if (p == q - 1)
{
cout << q;
return;
}
f(t, q);
}
}
int main()
{
cin >> N >> M;
long long sum = 0;
for (int i = 0; i < N; i++)
{
cin >> a[i];
sum += a[i];
}
int t = max_element(a, a + N) - a;
f(a[t], sum);
}
跪谢