Pagini recente » Cod sursa (job #2557795) | Cod sursa (job #2892944) | Cod sursa (job #191952) | Cod sursa (job #1616869) | Cod sursa (job #2775431)
#include <bits/stdc++.h>
using namespace std;
const int mxN = 16000;
int salt[mxN];
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int n, k;
cin >> n >> k;
int L=0, R=0;
for(int i=1; i<=n; ++i) {
cin >> salt[i];
L=max(L, salt[i]);
R+=salt[i];
}
--L, ++R;
while(L+1<R) {
int M=(L+R)/2, drumuri=0, sum=0;
for(int i=1; i<=n; ++i) {
if(sum+salt[i]>M) {
++drumuri;
sum=salt[i];
}
else sum+=salt[i];
}
if(sum==salt[n]) ++drumuri;
if(drumuri>k) L=M;
else R=M;
}
cout << R << "\n";
return 0;
}