Pagini recente » Cod sursa (job #3271679) | Cod sursa (job #2601728) | Cod sursa (job #312917) | Cod sursa (job #1430378) | Cod sursa (job #2661289)
#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 ( s + v[i] <= k)
s += v[i];
else {
cate++;
s = v[i];
}
return cate;
}
int cb(int x) {
int pos, step;
for ( pos = 0, step = (1 << 28); step; step >>= 1)
if ( transporturi(pos + step) > x )
pos += step;
return pos + 1;
}
int main() {
FILE *fin, *fout;
int k;
fin = fopen("transport.in", "r");
fscanf( fin, "%d%d", &n ,&k );
for ( int i = 0; i < n; i++ )
fscanf(fin, "%d", &v[i] );
fclose( fin );
fout = fopen("transport.out", "w");
fprintf(fout, "%d\n", cb(k) );
fclose( fout );
return 0;
}