Pagini recente » Cod sursa (job #708009) | Cod sursa (job #14331) | Cod sursa (job #1285014) | Cod sursa (job #412543) | Cod sursa (job #1528568)
#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;
}