Pagini recente » Cod sursa (job #1197823) | Cod sursa (job #2963234) | Cod sursa (job #195078) | Cod sursa (job #2715810) | Cod sursa (job #1309756)
#include <stdio.h>
const int Nmax = 16005;
int n, k;
int v[Nmax];
int s[Nmax];
bool check(int c) {
int t = 1;
int s = 0;
for (int i = 1; i <= n; ++i) {
if (v[i] > c) return 0;
else if (s + v[i] <= c) s += v[i];
else {
++t;
s = v[i];
}
}
return t <= k;
}
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int x = 0;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i) {
scanf("%d", &v[i]);
x += v[i];
}
int pos = 0;
int step = 1 << 28;
while (step >>= 1)
if (pos + step <= x && !check(pos + step))
pos += step;
printf("%d\n", pos + 1);
return 0;
}