Pagini recente » Cod sursa (job #1663995) | Cod sursa (job #1024060) | Cod sursa (job #3038533) | Cod sursa (job #290783) | Cod sursa (job #3038536)
#include <bits/stdc++.h>
using namespace std;
const string FNAME = "transport";
ifstream fin(FNAME + ".in");
ofstream fout(FNAME + ".out");
constexpr int NMAX = 16e3 + 3;
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);
int high = accumulate(v + 1, v + n + 1, 0);
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;
}