Pagini recente » Cod sursa (job #3154262) | Cod sursa (job #2945983) | Cod sursa (job #249751) | Cod sursa (job #1295002) | Cod sursa (job #2526945)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
const long long VM = 16000;
long long v [VM + 1], maxs;
long long transporturi (long long x, long long k, long long n) {
long long s, t;
s = 0; t = 1;
for (long long i = 1; i <= n; i ++) {
s += v [i];
if (s > x) {
s = v [i];
t ++;
}
}
return t;
}
long long cbin (long long n, long long k) {
long long 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() {
long long n, k, r;
in >> n >> k;
maxs = 0;
for (long long i = 1; i <= n; i ++) {
in >> v [i];
maxs = max (maxs, v [i]);
}
r = cbin (n, k);
out << r;
return 0;
}