Pagini recente » Cod sursa (job #2407892) | Cod sursa (job #725805) | Cod sursa (job #1811982) | Cod sursa (job #2450350) | Cod sursa (job #2274689)
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int MaxVolume = 16005 * 16005;
int main() {
int n, k; in >> n >> k;
vector< int > v(n);
int maxVolMattress = 0;
for(auto& it: v) {
in >> it;
maxVolMattress = max(maxVolMattress, it);
}
int lo = maxVolMattress, hi = MaxVolume;
while(lo <= hi) {
int mid = (lo + hi) >> 1;
int sumLeft = mid - v[0];
int countTransports = 1;
for(int i = 1; i < n; ++i) {
if(v[i] <= sumLeft) {
sumLeft -= v[i];
} else {
countTransports++;
sumLeft = mid - v[i];
}
}
if(countTransports <= k) {
hi = mid - 1;
} else {
lo = mid + 1;
}
}
out << lo << '\n';
v.clear();
in.close(); out.close();
return 0;
}