Pagini recente » Cod sursa (job #1144568) | Cod sursa (job #1709466) | Cod sursa (job #2582646) | Cod sursa (job #1468444) | Cod sursa (job #2426633)
#include <stdio.h>
int main() {
FILE *fin = fopen( "transport.in", "r" );
FILE *fout = fopen( "transport.out", "w" );
int n, i, k, cc, c, p, capacitate=0, transporturi;
fscanf( fin, "%d%d", &n, &k );
int v[n];
for ( i = 0; i < n; i ++ )
fscanf( fin, "%d", &v[i] );
p = 1;
for ( i = 1; i < 28; i ++ )
p *= 2;
while ( p > 0 ) {
c = p + capacitate;
transporturi = cc = 0;
for ( i = 0; i < n; i ++ ) {
if ( v[i] > c )
capacitate += p;
if ( v[i] > cc ) {
cc = c;
transporturi ++;
}
cc -= v[i];
}
if ( transporturi > k )
capacitate += p;
p /= 2;
}
fprintf( fout, "%d", capacitate );
return 0;
}