Pagini recente » Cod sursa (job #2170174) | Cod sursa (job #3166323) | Cod sursa (job #2492110) | Cod sursa (job #2584267) | Cod sursa (job #3152345)
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main()
{
FILE *fin, *fout;
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
int n, k, a, i, mx, mi, mij, sum;
fscanf(fin, "%d %d", &n, &k);
mi = mx = 0;
for(i = 0 ; i < n; i ++){
fscanf(fin, "%d", &v[i]);
if(mi < v[i]){
mi = v[i];
}
}
mx = mi * n;
mij = 0;
while(mi + 1 < mx){
mij = (mi + mx) / 2;
sum = 0;
a = 1;
for(i = 0; i < n; i++){
if(sum + v[i] <= mij){
sum += v[i];
}else{
a++;
sum = v[i];
}
}
if(a <= k){
mx = mij;
}else{
mi = mij;
}
}
fprintf(fout, "%d", mx);
fclose(fin);
fclose(fout);
return 0;
}