Pagini recente » Cod sursa (job #2364785) | Cod sursa (job #2380797) | Cod sursa (job #1691835) | Cod sursa (job #510822) | Cod sursa (job #3152444)
#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, ok, rasp;
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];
}
}
ok = sum = 0;
a = 1;
mij = mi;
for(i = 0; i < n; i++){
if(sum + v[i] <= mij){
sum += v[i];
}else{
a++;
sum = v[i];
}
}
if(a == k){
ok = 1;
rasp = mij;
}
mx = mi * n ;
mij = 0;
while(mx - mi > 1){
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;
}
}
if(ok == 1){
fprintf(fout, "%d", rasp);
}else{
fprintf(fout, "%d", mx);
}
fclose(fin);
fclose(fout);
return 0;
}