Pagini recente » Cod sursa (job #1552115) | Cod sursa (job #1448249) | Cod sursa (job #3230014) | Cod sursa (job #548849) | Cod sursa (job #1528566)
#include <bits/stdc++.h>
using namespace std;
int x[16666];
int main() {
//freopen("transport.in", "r", stdin);
//freopen("transport.out", "w", stdout);
int n, k, low = 0, up = 0;
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; ++i) {
scanf("%d", &x[i]);
up += x[i];
if (x[i] > low)
low = x[i];
}
int st = low, dr = up, res;
while (st <= dr) {
int med = (st + dr) / 2;
int camioane = 1;
int sum = 0;
for (int i = 1; i <= n; ++i) {
if (sum + x[i] <= med)
sum += x[i];
else {
++camioane;
sum = x[i];
}
}
if (camioane <= k) {
res = med;
dr = med - 1;
} else
st = med + 1;
}
printf("%d", res);
return 0;
}