Pagini recente » Cod sursa (job #1607849) | Cod sursa (job #243958) | Cod sursa (job #951696) | Cod sursa (job #2287455) | Cod sursa (job #1708141)
#include <cstdio>
using namespace std;
const int NMAX = 16000;
int v[NMAX + 5];
int main() {
freopen("transport.in" , "r" , stdin);
freopen("transport.out" , "w" , stdout);
int n , i , s , k , st , dr , med , c , tr , sum , last;
scanf("%d%d" , &n , &k);
s = 0;
for(i = 1 ; i <= n ; i ++) {
scanf("%d" , &v[i]);
s = s + v[i];
}
st = 1;
dr = s;
last = 0;
while(st <= dr) {
med = (st + dr) / 2;
c = med;
tr = 0;
sum = 0;
for(i = 1 ; i <= n ; i ++) {
if(v[i] > c) {
tr = k + 1;
sum = 0;
break;
}
if(sum + v[i] > c) {
tr ++;
sum = v[i];
} else
sum = sum + v[i];
}
if(sum > 0)
tr ++;
if(tr <= k) {
last = med;
dr = med - 1;
} else
st = med + 1;
}
printf("%d\n" , last);
return 0;
}