Pagini recente » Cod sursa (job #1548880) | Cod sursa (job #1813856) | Cod sursa (job #769814) | Rating florea cristian (florea) | Cod sursa (job #2208314)
#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;
int pp;
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;
pp = 0;
while ( st <= dr && pp == 0 ){
mij = ( st + dr ) / 2;
printf ( "%d %d %d ", st, dr, mij );
s = 0;
t = 0;
i = 1;
while ( i <= n ){
s = s + v[i];
if ( s > mij ){
s = 0;
t++;
}
else
i++;
}
printf ( "%d ", t );
if ( t < k )
dr = mij - 1;
else if ( t > k ){
nr = mij;
st = mij + 1;
}
else{
pp = 1;
nr = mij;
}
}
fprintf ( fout, "%d", nr + 1 );
return 0;
}