Pagini recente » Cod sursa (job #2907538) | Cod sursa (job #2773321) | Cod sursa (job #834702) | Cod sursa (job #2941691) | Cod sursa (job #1005349)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <numeric>
#define NMAX 17000
using namespace std;
int N, K, a[NMAX], lo, hi, mid, transport, capac;
int main(){
freopen("transport.in", "r", stdin );
freopen("transport.out", "w", stdout );
scanf("%d%d", &N, &K );
for( int i = 0; i < N; i++ )
scanf("%d", &a[i] );
lo = *max_element( a, a+N );
hi = accumulate( a, a+N, 0 );
while( lo <= hi ){
mid = lo + (hi-lo)/2;
transport = 1; capac = 0;
for( int i = 0; i < N; i++ )
if( capac + a[i] <= mid )
capac += a[i];
else{
capac = a[i];
transport++;
}
if( transport > K )
lo = mid+1;
else
hi = mid-1;
}
printf("%d", hi+1);
return 0;
}