Pagini recente » Cod sursa (job #2882948) | Cod sursa (job #31384) | Cod sursa (job #1170106) | Cod sursa (job #1082332) | Cod sursa (job #2907707)
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
#define cin in
#define cout out
#define NMAX 16005
int n, k, vol[NMAX];
bool check_transport(int cap){
int tr = 1, cur = 0;
for (int i = 0; i < n; i++) {
if (vol[i] > cap)
return false;
if (cur + vol[i] > cap) {
tr++;
cur = vol[i];
}
else
cur += vol[i];
}
return tr <= k;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for (int i = 0; i < n; ++i)
cin >> vol[i];
int l = 0, r = NMAX * n + 1;
while (l < r) {
int m = (l + r) / 2;
if (check_transport(m)) {
r = m;
}
else
l = m + 1;
}
cout << l << '\n';
return 0;
}