Pagini recente » Cod sursa (job #3229651) | Cod sursa (job #644055) | Cod sursa (job #3263628) | Cod sursa (job #2876093) | Cod sursa (job #2526956)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
const int VM = 16000;
int v [VM + 1], maxs;
int transporturi (int x, int k, int n) {
int s, t;
s = 0; t = 1;
for (int i = 1; i <= n; i ++) {
s += v [i];
if (s > x) {
s = v [i];
t ++;
}
}
return t;
}
int cbin (int n, int k) {
int st, dr, m;
st = maxs; dr = VM;
while (st < dr) {
m = (st + dr) / 2;
if (transporturi (m, k, n) <= k)
dr = m;
else
st = m + 1;
}
return st;
}
int main() {
int n, k, r;
in >> n >> k;
maxs = 0;
for (int i = 1; i <= n; i ++) {
in >> v [i];
maxs = max (maxs, v [i]);
}
r = cbin (n, k);
out << r;
return 0;
}