Pagini recente » Cod sursa (job #182883) | Cod sursa (job #205897) | Cod sursa (job #1779987) | Cod sursa (job #1529912) | Cod sursa (job #96669)
Cod sursa(job #96669)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long n, k, i, poz1, poz2, vb1, mij, sum, a[16000], tra, sol;
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%ld%ld", &n, &k);
for (i = 1;i <= n; ++i) {
scanf("%ld", &a[i]);
if (poz1 < a[i]) poz1 = a[i];
poz2 = poz2 +a[i];
}
vb1 = 0;
a[n + 1] = 100000000;
while (poz1 <= poz2) {
mij = (poz1 + poz2) / 2;
sum = 0;
tra = 0;
for (i = 1;i <= n; ++i) {
sum = sum + a[i];
if (sum + a[i] > mij) {
tra++;
sum = 0;
}
}
if (tra <= k) {
sol = mij;
poz2 = mij - 1;
} else {
poz1 = mij + 1;
}
}
printf("%ld", sol);
return 0;
}