Pagini recente » Cod sursa (job #2198689) | Cod sursa (job #1051688) | Cod sursa (job #2630057) | Cod sursa (job #2845806) | Cod sursa (job #2208318)
#include <stdio.h>
#include <stdlib.h>
int v[16001];
int main()
{
FILE *fin, *fout;
int n, k, i;
int s, max;
int st, dr, mij, t;
int nr;
fin = fopen ( "transport.in", "r" );
fscanf ( fin, "%d%d", &n, &k );
fout = fopen ( "transport.out", "w" );
max = 0;
s = 0;
for ( i = 1; i <= n; i ++ ){
fscanf ( fin, "%d", &v[i] );
if ( max < v[i] )
max = v[i];
s = s + v[i];
}
st = max;
dr = s;
while ( st <= dr){
mij = ( st + dr ) / 2;
s = 0;
t = 1;
i = 1;
while ( i <= n ){
s = s + v[i];
if ( s > mij ){
s = 0;
t++;
}
else
i++;
}
if ( t > k )
st=mij+1;
else {
nr = mij;
dr = mij - 1;
}
}
fprintf ( fout, "%d", nr );
return 0;
}