Pagini recente » Cod sursa (job #444199) | Cod sursa (job #2233515) | Cod sursa (job #1940711) | Cod sursa (job #1754027) | Cod sursa (job #2426637)
#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, ok;
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 = ok = 0;
for ( i = 0; i < n; i ++ ) {
if ( v[i] > c )
ok = 1;
if ( v[i] > cc ) {
cc = c;
transporturi ++;
}
cc -= v[i];
}
if ( transporturi > k || ok==1)
capacitate += p;
p /= 2;
}
fprintf( fout, "%d", capacitate + 1 );
return 0;
}