Pagini recente » Cod sursa (job #2621374) | Cod sursa (job #2395700) | Cod sursa (job #1972997) | Cod sursa (job #2886792) | Cod sursa (job #1672900)
#include <stdio.h>
#include <stdlib.h>
int v[16001];
int main () {
FILE *fin, *fout;
int n, k, i, l1 = 0, l2 = 0, m, a, sum, tr;
fin = fopen ( "transport.in", "r" );
fout = fopen ( "transport.out", "w" );
fscanf ( fin, "%d%d", &n, &k );
for ( i = 0; i < n; i++ ) {
fscanf ( fin, "%d", &v[i] );
l2 += v[i];
if ( v[i] > l1 )
l1 = v[i];
}
while ( l1 != l2 ) {
m = ( l1 + l2 ) / 2;
sum = 0;
tr = 1;
for ( i = 0; i < n && tr <= k; i++ ) {
if ( v[i] + sum <= m )
sum += v[i];
else {
tr++;
sum = v[i];
}
}
if ( tr > k )
l1 = m + 1;
else
l2 = m;
}
fprintf ( fout, "%d", l1 );
fclose ( fin );
fclose ( fout );
return 0;
}