Pagini recente » Cod sursa (job #261435) | Cod sursa (job #1838509) | Cod sursa (job #152673) | Cod sursa (job #1994897) | Cod sursa (job #2960019)
#include <bits/stdc++.h>
std::ifstream f("transport.in");
std::ofstream g("transport.out");
long double t;
int n, k, a[16000], i, st, dr, mij, maxim, total, transporturi, capacitate;
int main()
{
t = time_t();
f >> n >> k;
for (int i = 0; i < n; ++i){
f >> a[i];
total += a[i];
maxim = std::max(maxim, a[i]);
}
st = maxim;
dr = total;
while (st<=dr){
mij = st + (dr - st) / 2;
transporturi = 1;
capacitate = 0;
for (int i = 0; i < n; ++i){
capacitate += a[i];
if (capacitate > mij){
capacitate = a[i];
++transporturi;
}
}
if (transporturi <= k) dr = mij - 1;
else st = mij + 1;
}
g << st;
t = time_t() - t;
std::cout << t << '\n';
return 0;
}