Pagini recente » Cod sursa (job #3038532) | Cod sursa (job #1653047) | Cod sursa (job #3154956) | Cod sursa (job #3228081) | Cod sursa (job #3038531)
#include <bits/stdc++.h>
using namespace std;
const string FNAME = "transport";
ifstream fin(FNAME + ".in");
ofstream fout(FNAME + ".out");
constexpr int NMAX = 16e3;
int n, k, v[NMAX];
int getTrans(int cap) {
int sumCap = 0, trans = 1;
for (int i = 1; i <= n; i++) {
if (sumCap + v[i] <= cap) {
sumCap += v[i];
} else {
sumCap = v[i];
trans++;
}
}
return trans;
}
int main() {
fin >> n >> k;
for (int i = 1; i <= n; i++) {
fin >> v[i];
}
int low = *max_element(v + 1, v + n + 1), high = NMAX * NMAX;
int ans = -1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (k >= getTrans(mid)) {
high = mid - 1;
ans = mid;
} else {
low = mid + 1;
}
}
fout << ans << endl;
fout.close();
return 0;
}