Pagini recente » Cod sursa (job #737484) | Cod sursa (job #92999) | Cod sursa (job #1270478) | Cod sursa (job #2626239) | Cod sursa (job #2080188)
#include <stdio.h>
int v[1600];
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;
j = 0;
while(st < dr) {
nr = 0;
m = (st + dr + 1) / 2;
for (i = 0; i != n; i++) {
j += v[i];
if (j >= m) {
nr++;
j -= m;
}
}
if (nr == k) {
rasp = m;
}
if (nr > k) {
rasp = m;
st = m + 1;
} else {
dr = m - 1;
}
}
fprintf(out, "%d", rasp);
return 0;
}