Pagini recente » Cod sursa (job #564316) | Cod sursa (job #1205695) | Cod sursa (job #1971198) | Cod sursa (job #2659436) | Cod sursa (job #2658120)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
const int NMAX = 16e3;
int n, k, st[NMAX];
void read () {
in >> n >> k;
for (int i=0; i<n; ++i)
in >> st[i];
}
bool test (int cp) {
int cnt = 0, c = 0;
for (int i=0; i<n; ++i) {
if (c + st[i] > cp) {
++cnt;
c = st[i];
} else
c += st[i];
// std::cout << "cnt: " << cnt << ", c: " << c << "\n";
}
++cnt;
return cnt <= k;
}
int search () {
int left = 0, right = NMAX * NMAX, mid, last = -1;
while (left <= right) {
mid = (left + right) / 2;
if (test(mid)) {
right = mid - 1;
last = mid;
} else
left = mid + 1;
}
return last;
}
int main() {
read();
out << search();
in.close();
out.close();
return 0;
}