Pagini recente » Cod sursa (job #2705542) | Cod sursa (job #1657737) | Cod sursa (job #2860986) | Cod sursa (job #1100181) | Cod sursa (job #2646712)
#include <stdio.h>
int n, k, v[ 16002 ];
long long s;
int bun( int mij ){
int i, cate, pun;
cate = 1;
pun = 0;
for( i = 0; i < n; i++ ){
if( pun + v[ i ] <= mij )
pun += v[ i ];
else {
++cate;
pun = v[ i ];
}
if( cate > k )
return 0;
}
if( cate > k )
return 0;
return 1;
}
int main()
{
int i, maxx = 0;
FILE *fin = fopen( "transport.in", "r" );
fscanf( fin, "%d%d", &n, &k );
for( i = 0; i < n; i++ ){
fscanf( fin, "%d", &v[ i ] );
s += v[ i ];
if( maxx < v[ i ] )
maxx = v[ i ];
}
fclose( fin );
int st = maxx;
int dr = s + 1;
int mij, sol = 0;
while( st <= dr ){
mij = ( st + dr ) / 2;
if( bun( mij ) == 1 ){
dr = mij - 1;
sol = mij;
} else st = mij + 1;
}
FILE *fout = fopen( "transport.out", "w" );
fprintf( fout, "%d\n", sol );
fclose( fout );
return 0;
}