Pagini recente » Cod sursa (job #92137) | Cod sursa (job #2245555) | Cod sursa (job #2623652) | Cod sursa (job #283446) | Cod sursa (job #2100923)
//
// main.c
// transport
//
// Created by Abel Hiticas on 06/01/2018.
// Copyright © 2018 Abel Hiticas. All rights reserved.
//
#include <stdio.h>
int v[16001], n, k, maxi=0, total=0;
int check(int capacity){
int i=0, sum=0, cnt=0;
for(i=0; i<n; i++){
if(sum+v[i] <= capacity){
sum+=v[i];
} else {
cnt++;
sum=v[i];
}
}
if (sum!=0)
cnt++;
return cnt;
}
int bs(int st, int dr) {
int val=1, mij=0;
while (st <= dr) {
mij = (st+dr)/2;
val = check(mij);
if(val==k){
if (check(mij-1) >k)
return mij;
else
dr=mij-1;
}
if(val>k)
st=mij+1;
else
dr=mij-1;
}
return mij;
}
int main(int argc, const char * argv[]) {
// insert code here...
int i=0;
freopen("transport.in","r",stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for(i=0; i<n; i++) {
scanf("%d", &v[i]);
total+=v[i];
if (v[i]>maxi) {
maxi = v[i];
}
}
printf("%d", bs(maxi, total));
return 0;
}