Pagini recente » Cod sursa (job #2472355) | Cod sursa (job #1575137) | Cod sursa (job #1648054) | Cod sursa (job #5260) | Cod sursa (job #96661)
Cod sursa(job #96661)
#include <stdio.h>
#include <math.h>
long n, k, i, poz1, poz2, vb1, mij, sum, a[1600], 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 (abs(poz1 - poz2) != 1) {
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;
} else {
poz1 = mij;
}
}
printf("%ld", sol);
return 0;
}