Pagini recente » Cod sursa (job #2986545) | Cod sursa (job #2594942) | Cod sursa (job #533819) | Cod sursa (job #296705) | Cod sursa (job #2427969)
#include <stdio.h>
int v[16000], n, k;
int verif( int mar ){
int nr, i, s;
s = 0;
nr = 0;
for( i = 0; i < n; i++ ){
s+= v[i];
if(s > mar){
s = v[i];
nr++;
}
}
nr++;
return nr;
}
int cautBin( int s){
int st, dr, mid, last;
st = 1;
dr = s;
while ( dr > st + 1){
mid = ( st + dr ) / 2;
if( verif( mid ) > k )
st = mid;
else{
dr = mid;
last = mid;
}
}
return last;
}
int main(){
FILE *fin, *fout;
fin = fopen( "transport.in", "r" );
fout = fopen( "transport.out", "w" );
int s, i;
fscanf( fin, "%d%d", &n, &k );
s = 0;
for ( i = 0; i < n; i++ ){
fscanf( fin, "%d", &v[i] );
s+= v[i];
}
fprintf( fout, "%d", cautBin( s ) );
return 0;
}