Pagini recente » Cod sursa (job #2393331) | Cod sursa (job #2396802) | Cod sursa (job #3121839) | Cod sursa (job #2328031) | Cod sursa (job #2528005)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
const int VM = 17000;
int v [VM + 1], maxs;
int transporturi (int x, int k, int n) {
int s, t;
s = t = 0;
for (int i = 1; i <= n; i ++) {
s += v [i];
if (s > x) {
s = v [i];
t ++;
}
}
return t + 1;
}
int cbin (int n, int k) {
int st, dr, m;
st = maxs; dr = 1000000;
while (st < dr) {
m = (st + dr) / 2;
if (transporturi (m, k, n) > k)
st = m + 1;
else
dr = m;
}
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;
}