Pagini recente » Cod sursa (job #3153360) | Cod sursa (job #180397) | Cod sursa (job #2885953) | Cod sursa (job #1842041) | Cod sursa (job #2675421)
#include <bits/stdc++.h>
#define int_min -100001
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, mxs, s, st, dr, mj, q, cmj;
int main() {
f >> n >> k;
mxs = int_min;
int v[n + 1];
for (int i = 1; i <= n; i++) {
f >> v[i];
s += v[i];
if (v[i] > mxs)
mxs = v[i];
}
st = mxs;
dr = s;
mj = (st + dr)/2;
while (st != mj && dr != mj) {
cmj = mj;
q = 0;
for (int j = 1; j <=n; j++) {
if (v[j] < cmj) {
cmj -= v[j];
} else {
q ++;
cmj = mj;
cmj -= v[j];
}
}
if (q < k)
dr = mj;
else
st = mj;
mj = (st + dr)/2;
}
g << mj;
return 0;
}