Pagini recente » Cod sursa (job #3221453) | Cod sursa (job #3199868) | Cod sursa (job #1657486) | Cod sursa (job #2620968) | Cod sursa (job #1806137)
#include <stdio.h>
#include <algorithm>
#include <ctype.h>
FILE *fin, *fout;
#define BUF 4096
int pos = BUF;
char buf[BUF];
inline char next() {
if(pos == BUF) fread(buf, 1, BUF, fin), pos = 0;
return buf[pos++];
}
inline void read(int &x) {
char ch;
x = 0;
ch = next();
while(!isdigit(ch)) ch = next();
while(isdigit(ch)) {
x = x * 10 + ch - '0';
ch = next();
}
return;
}
#define max(a, b) (a > b ? a : b)
int n, k, maxim;
int v[16000];
int main() {
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
read(n);
read(k);
int st, dr, mijloc;
int i;
int x = 0;
for(i = 0;i < n;i++) {
read(v[i]);
maxim = max(maxim, v[i]);
x += v[i];
}
int s = 0, cc = 1;
st = maxim;
dr = x;
while(st <= dr) {
mijloc = (st+dr)/2;
for(i = 0;i < n;i++) {
s=s+v[i];
if(s > mijloc) {
cc++;
s = v[i];
}
}
if(cc > k) {
st = mijloc + 1;
cc = 1;
s = 0;
}
else {
dr = mijloc - 1;
cc = 1;
s = 0;
}
}
fprintf(fout, "%d", st);
fclose(fin);
fclose(fout);
return 0;
}