Pagini recente » Cod sursa (job #3289418) | Cod sursa (job #3154469) | Cod sursa (job #2454083) | Cod sursa (job #1670874) | Cod sursa (job #3038537)
#include <bits/stdc++.h>
using namespace std;
const string FNAME = "transport";
ifstream fin(FNAME + ".in");
ofstream fout(FNAME + ".out");
int getTrans(int targetVol, const vector<int> &vols) {
int totalVol = 1, trans = 0;
for (int vol : vols) {
if (totalVol + vol <= targetVol) {
totalVol += vol;
} else {
totalVol = vol;
trans++;
}
}
return trans;
}
int main() {
int n, k;
vector<int> vols(n);
fin >> n >> k;
for (int &vol : vols) {
fin >> vol;
}
int low = *max_element(vols.cbegin(), vols.cend());
int high = accumulate(vols.cbegin(), vols.cend(), 0);
int ans = 0;
while (low <= high) {
int mid = (low + high) / 2;
if (getTrans(mid, vols) <= k) {
high = mid - 1;
ans = mid;
} else {
low = mid + 1;
}
}
fout << ans << endl;
fout.close();
return 0;
}