Pagini recente » Cod sursa (job #2239276) | Borderou de evaluare (job #100992) | Borderou de evaluare (job #880094) | oji17 | Cod sursa (job #2661407)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int32_t main() {
fin.sync_with_stdio(false);
fout.sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
int N, K;
fin >> N >> K;
vector < int > a(N);
int sum = 0;
for(int& x : a)
fin >> x, sum += x;
int st = 1, dr = 1e14L, ans = 1e14L;
while(st <= dr) {
int mid = (st + dr) >> 1;
int cnt = 1;
sum = 0;
for(int x : a) {
if(sum + x <= mid)
sum += x;
else {
sum = x;
++cnt;
}
if(cnt > K)
break;
}
if(cnt <= K) {
ans = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
fout << ans;
}