Pagini recente » Cod sursa (job #2727438) | Cod sursa (job #2601581) | Cod sursa (job #2333757) | Cod sursa (job #1608593) | Cod sursa (job #2467675)
#include <bits/stdc++.h>
using namespace std;
int N, K;
int A[16010];
bool check(int cap) {
if (cap <= 0) return 0;
int cnt = 1;
int sum = 0;
for (int i = 1; i <= N; i++) {
if (sum + A[i] > cap) {
sum = A[i];
cnt++;
} else {
sum += A[i];
}
}
return cnt <= K;
}
int main () {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> N >> K;
int mx = -1e9;
for (int i = 1; i <= N; i++) {
fin >> A[i];
mx = max(mx, A[i]);
}
int st = mx;
int dr = 256000001;
while (st <= dr) {
int mid = (st + dr) / 2;
if (check(mid)) dr = mid - 1;
else st = mid + 1 ;
//cout << st << " " << dr<< endl;
}
fout << st;
// for (int i = 1; i <= 20; i++)
// cout << i << " " << check(i) << endl;
return 0;
}