Pagini recente » Cod sursa (job #886536) | Cod sursa (job #398318) | Cod sursa (job #2835489) | Cod sursa (job #1192176) | Cod sursa (job #1721582)
#include<stdio.h>
FILE *in, *out;
int v[16000], n, k;
int mere(int x)
{
int i, s, ture;
ture = k;
s = 0;
for(i = 0; i < n; i++) {
if(s + v[i] > x) {
ture--;
s = v[i];
} else {
s = s + v[i];
}
}
ture--;
if(ture >= 0) {
return 1;
} else {
return 0;
}
}
int main ()
{
int i, max, s, m, dr, st;
in = fopen("transport.in", "r");
out = fopen("transport.out", "w");
fscanf(in, "%d%d", &n, &k);
s = 0;
max = 0;
for(i = 0; i < n; i++) {
fscanf(in, "%d", &v[i]);
if(v[i] > max) {
max = v[i];
}
s = s + v[i];
}
st = max;
dr = s;
while(st < dr - 1) {
m = (st + dr) / 2;
if(mere(m)) {
dr = m;
} else {
st = m;
}
}
if(!mere(m)) {
m++;
}
fprintf(out, "%d", m);
//fprintf(out, "%d", mere(8));
fclose(in);
fclose(out);
return 0;
}