Pagini recente » Cod sursa (job #2589626) | Cod sursa (job #909675) | Cod sursa (job #2757827) | Cod sursa (job #687398) | Cod sursa (job #3142099)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <algorithm>
using namespace std;
const int Nmax = 16005;
int n, k, a[Nmax];
ifstream fin("transport.in");
ofstream fout("transport.out");
int cateDrumuri(int cap) {
int nr = 1, volum = 0;
for (int i = 1; i <= n; i++) {
if (volum + a[i] <= cap) {
volum += a[i];
}
else {
nr++;
volum = a[i];
}
}
return nr;
}
int main() {
fin >> n >> k;
int left = 0, right = 0;
for (int i = 1; i <= n; i++) {
fin >> a[i];
left = max(left, a[i]);
right += a[i];
}
int sol;
while (left <= right) {
int mid = (left + right) / 2;
int nr = cateDrumuri(mid);
if (nr <= k) {
sol = mid;
right = mid - 1;
}
else {
left = mid + 1;
}
}
fout << sol << "\n";
return 0;
}