Pagini recente » Cod sursa (job #3122912) | Cod sursa (job #2062852) | Cod sursa (job #2959772) | Cod sursa (job #2564170) | Cod sursa (job #3341934)
///Doamne ajuta!!!
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int N, K;
bool verifica(long long cap) {
int cnt = 1;
long long suma = 0;
for (int i = 0; i < N; i++) {
if (v[i] > cap) return false;
if (suma + v[i] <= cap) {
suma += v[i];
} else {
cnt++;
suma = v[i];
}
}
return cnt <= K;
}
long long cb() {
long long ans = 0;
for (long long pas = 1LL << 30; pas > 0; pas /= 2) {
if (!verifica(ans + pas)) {
ans += pas;
}
}
return ans + 1;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
cin >> N >> K;
v.resize(N);
for (int i = 0; i < N; i++) {
cin >> v[i];
}
long long cap_min = cb();
cout << cap_min << '\n';
return 0;
}