Pagini recente » Cod sursa (job #1971373) | Cod sursa (job #1280869) | Cod sursa (job #1075866) | Cod sursa (job #2434914) | Cod sursa (job #2080239)
#include <stdio.h>
int v[16001];
using namespace std;
int main()
{
FILE* in = fopen("transport.in", "r");
FILE* out = fopen("transport.out", "w");
int n, k, st, dr, i, j, nr, rasp, m;
st = dr = 0;
fscanf(in, "%d %d", &n, &k);
for (i = 0; i < n; i++) {
fscanf(in, "%d", &v[i]);
if (v[i] > st) {
st = v[i];
}
dr += v[i];
}
nr = 0;
while(st <= dr) {
j = 0;
nr = 0;
m = (st + dr) / 2;
for (i = 0; i != n; i++) {
j += v[i];
if (j > m) {
nr++;
j = v[i];
}
}
nr++;
if (nr <= k) {
rasp = m;
}
if (nr > k) {
st = m + 1;
} else {
dr = m - 1;
}
}
fprintf(out, "%d", rasp);
return 0;
}