Pagini recente » Cod sursa (job #2280925) | Cod sursa (job #358641) | Cod sursa (job #1510874) | Cod sursa (job #3258581) | Cod sursa (job #2079572)
#include <cstdio>
using namespace std;
int v[16000];
int n,k;
int verif( int d ) {
int i,s,t;
s = 0;
i = 1;
t = 0;
while( i <= n ) {
while( s <= d && i <= n ) {
s = s + v[i];
i ++;
}
t ++;
if( s > d )
i --;
s = 0;
}
if( t <= k )
return 1;
return 0;
}
int main() {
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int c,st,dr,mid,max,s,i;
scanf("%d%d",&n,&k);
max = s = 0;
for( i = 1; i <= n; i ++ ) {
scanf("%d",&v[i]);
if( max < v[i] )
max = v[i];
s = s + v[i];
}
st = max;
dr = s;
int min = s + 1;
mid = ( dr + st ) / 2;
while( st <= dr ) {
if( verif( mid ) == 1 ) {
if( min > mid )
min = mid;
dr = mid-1;
}
else
st = mid+1;
mid = ( dr + st ) / 2;
}
printf("%d",min);
return 0;
}