Pagini recente » Cod sursa (job #1855615) | Cod sursa (job #1111135) | Cod sursa (job #1349562) | Cod sursa (job #2833308) | Cod sursa (job #1558604)
/*
http://www.infoarena.ro/problema/transport
*/
#include <cstdio>
#include <algorithm>
using namespace std;
const int N_MAX = 16000;
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int N, K;
scanf("%d%d", &N, &K);
int v[N_MAX];
for (int i = 0; i < N; i++) {
scanf("%d", &v[i]);
}
int step = 1 << 30;
int pos = 0;
while (step >>= 1) {
int cap = pos + step;
int trucks = 0;
for (int i = 0; i < N; i++) {
if (cap < v[i]) {
trucks = K + 1;
break;
}
}
for (int i = 0, sum = 0; i < N; i++) {
if (sum + v[i] > cap) {
sum = v[i];
trucks++;
} else {
sum += v[i];
}
}
if (trucks >= K) {
pos += step;
}
}
printf("%d\n", pos + 1);
return 0;
}