Pagini recente » Cod sursa (job #2624938) | Cod sursa (job #1086594) | Cod sursa (job #541811) | Cod sursa (job #1735123) | Cod sursa (job #2890762)
#include <bits/stdc++.h>
#define INF ((int)1e9)
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k;
vector<int> v;
void read_input() {
fin >> n >> k;
for (int i = 0; i < n; ++i) {
int a;
fin >> a;
v.push_back(a);
}
}
int get_trips(int truck_size) {
int trips = 0;
int curr_size = 0;
for (int i = 0; i < n; ++i) {
if (v[i] > truck_size) {
return -1;
}
curr_size += v[i];
if (curr_size > truck_size) {
// cout << "HERE -- " << i << ": " << v[i] << "\n";
++trips;
curr_size = v[i];
}
}
return ++trips;
}
int main(void) {
read_input();
int left = 0;
int right = INF;
int min_size = INF;
while (left <= right) {
int mid = left + (right - left) / 2;
int trips = get_trips(mid);
if (trips == -1) {
left = mid + 1;
} else if (k < trips) {
left = mid + 1;
} else {
min_size = min(min_size, mid);
right = mid - 1;
}
}
fout << min_size << "\n";
// for (int i = 0; i <= 15; ++i) {
// cout << i << ": " << get_trips(i) << "\n";
// }
return 0;
}