Pagini recente » Cod sursa (job #3154223) | Cod sursa (job #255624) | Cod sursa (job #1244164) | Cod sursa (job #70949) | Cod sursa (job #1528555)
#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 = 16666, 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;
}