Pagini recente » Cod sursa (job #3322465) | Cod sursa (job #3334414) | Cod sursa (job #1219946) | Cod sursa (job #1700779) | Cod sursa (job #3317963)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream f("transport.in");
ofstream g("transport.out");
int N, K;
f >> N >> K;
vector<int> v(N + 1);
for (int i = 1; i <= N; i++)
f >> v[i];
int st = *max_element(v.begin() + 1, v.end());
long long dr = 0;
for (int i = 1; i <= N; i++)
dr += v[i];
while (st < dr) {
long long mid = (st + dr) / 2;
int curse = 1;
long long curent = 0;
for (int i = 1; i <= N; i++) {
if (curent + v[i] <= mid)
curent += v[i];
else {
curse++;
curent = v[i];
}
}
if (curse <= K)
dr = mid;
else
st = mid + 1;
}
g << st << "\n";
return 0;
}