Pagini recente » Cod sursa (job #1635810) | Cod sursa (job #3302352) | Cod sursa (job #2420879) | Cod sursa (job #3345422) | Cod sursa (job #3341554)
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, k, v[16005];
bool check(int x) {
int nrTransport = 0, sum = 0;
for(int i = 1; i <= n; ++i) {
if(v[i] > x)
return false;
if(sum + v[i] > x) {
++nrTransport;
sum = 0;
}
sum += v[i];
}
if(sum)
++nrTransport;
if(nrTransport > k)
return false;
return true;
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
#ifndef LOCAL
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
#endif
cin >> n >> k;
int summ = 0;
for(int i = 1; i <= n; ++i) {
cin >> v[i];
summ += v[i];
}
int rez = 0;
for(int pas = 1 << 15; pas; pas >>= 1) {
if(rez + pas <= summ && !check(rez + pas)) {
rez += pas;
}
}
cout << rez + 1;
return 0;
}