Pagini recente » Cod sursa (job #1335960) | Cod sursa (job #1392717) | Cod sursa (job #1059040) | Cod sursa (job #536976) | Cod sursa (job #1488862)
#include <stdio.h>
#define MAX 16005
int n, k, i, a[MAX], s, max, st, dr, mij;
int main(){
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &k);
for(i = 1; i <= n; i++){
scanf("%d", &a[i]);
s += a[i];
max = max < a[i] ? a[i] : max;
}
st = max;
dr = s;
while(st <= dr){
int t = 0, nrtrans = 0;
while(t < n){
mij = (st + dr) / 2;
while(mij >= a[t + 1])
mij -= a[++t];
nrtrans++;
}
if(nrtrans > k)
st = (st + dr) / 2 + 1;
else
dr = (st + dr) / 2 - 1;
}
printf("%d\n", st);
return 0;
}