Pagini recente » Cod sursa (job #692759) | Cod sursa (job #2919424) | Cod sursa (job #2185203) | Cod sursa (job #1909782) | Cod sursa (job #1310881)
#include <cstdio>
using namespace std;
const int N_MAX = 16000;
int verif(int *v, int v_len, int c) {
int s = 0, t = 1;
for (int i = 0; i < v_len; i++) {
// if (v[i] > c) return 0;
if (s + v[i] > c) {
s = v[i];
t++;
} else {
s += v[i];
}
}
//printf("t: %d c: %d\n", t, c);
return t;
}
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int N, K;
scanf("%d%d", &N, &K);
int v[N_MAX], x = 0;
for (int i = 0; i < N; i++) {
scanf("%d", &v[i]);
x += v[i];
}
int pas = 1 << 30, poz = 0;
while (pas >>= 1) {
if (pas + poz <= x) {
int test = verif(v, N, pas + poz);
if (test > K)
poz += pas;
else if (test == K) {
printf("%d", pas+poz); break;
}
}
}
return 0;
}