Pagini recente » Cod sursa (job #2699360) | Cod sursa (job #2869197) | Cod sursa (job #2900725) | Cod sursa (job #1350654) | Cod sursa (job #2775435)
#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=0; 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=0; i<n; ++i) {
if(sum+salt[i]>M) {
++drumuri;
--i;
sum=0;
}
else sum+=salt[i];
}
if(sum!=0) ++drumuri;
if(drumuri>k) L=M;
else R=M;
}
cout << R << "\n";
return 0;
}