Pagini recente » Cod sursa (job #1407622) | C.C. | Cod sursa (job #818277) | Cod sursa (job #1092864) | Cod sursa (job #2661297)
#include <stdio.h>
using namespace std;
const int NMAX = 16000;
int v[NMAX],n;
int transporturi(int k) {
int cate, i, s;
cate = 1; s = 0;
for ( i = 0; i < n; i++ )
if( v[i] > k)
return 1017932;
else if ( s + v[i] <= k)
s += v[i];
else {
cate++;
s = v[i];
}
return cate;
}
int cb(int x,int s) {
int st, dr, mij;
st = 0; dr = s;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
if( transporturi(mij) > x )
st = mij;
else
dr = mij;
}
return dr;
}
int main() {
FILE *fin, *fout;
int k, s;
fin = fopen("transport.in", "r");
fscanf( fin, "%d%d", &n ,&k );
s = 0;
for ( int i = 0; i < n; i++ ) {
fscanf(fin, "%d", &v[i] );
s += v[i];
}
fclose( fin );
fout = fopen("transport.out", "w");
fprintf(fout, "%d\n", cb(k, s) );
fclose( fout );
return 0;
}