Pagini recente » Cod sursa (job #468745) | Cod sursa (job #2871968) | Cod sursa (job #621495) | Cod sursa (job #3152019) | Cod sursa (job #3185501)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int NMAX = 16e3;
int answer, n, k, a[NMAX];
bool check(int value) {
int currentShipment = 0, numberOfShipments = 1;
for (int index = 0; index < n; ++index) {
if (currentShipment + a[index] <= value) {
currentShipment += a[index];
continue;
}
if (a[index] > value || numberOfShipments == k) {
return false;
}
currentShipment = a[index];
++numberOfShipments;
}
return true;
}
void read() {
cin >> n >> k;
for (int index = 0; index < n; ++index) {
cin >> a[index];
}
}
void solve() {
int left = 1, right = 256e6, middle;
while (left <= right) {
middle = (left + right) / 2;
if (check(middle)) {
answer = middle;
right = middle - 1;
continue;
}
left = middle + 1;
}
}
void display() {
cout << answer;
}
int main() {
read();
solve();
display();
return 0;
}