Pagini recente » Cod sursa (job #2839148) | Cod sursa (job #2523883) | Cod sursa (job #138094) | Cod sursa (job #2181571) | Cod sursa (job #3307639)
#include <fstream>
#include <iostream>
std::ifstream in("transport.in");
std::ofstream out("transport.out");
int n, k, v[16005];
int st = 1, dr = 0, cap = 1;
int main() {
in >> n >> k;
for (int i = 0; i < n; ++i) {
in >> v[i];
dr += v[i];
}
while (st <= dr) {
int sum = 0, tr=1;
cap = (st + dr) / 2;
for (const auto& val : v) {
if (val > cap) {
tr = k+1;
break;
}
if (sum + val <= cap) {
sum += val;
}
else {
sum = val;
++tr;
}
}
if (tr > k) {
st = cap + 1;
}
else {
dr = cap-1;
}
}
out << st;
return 0;
}