Pagini recente » Cod sursa (job #2950850) | Cod sursa (job #2934019) | Cod sursa (job #3280436) | Cod sursa (job #2986899) | Cod sursa (job #2467673)
#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;
for (int i = 1; i <= N; i++)
fin >> A[i];
int st = 1;
int dr = 1000000;
while (st <= dr) {
int mid = (st + dr) / 2;
if (check(mid)) dr = mid - 1;
else st = mid + 1 ;
//cout << st << " " << dr<< endl;
}
while(!check(st)) st++;
fout << st;
// for (int i = 1; i <= 20; i++)
// cout << i << " " << check(i) << endl;
return 0;
}