Pagini recente » Cod sursa (job #2927142) | Cod sursa (job #2693789) | Cod sursa (job #1911189) | Cod sursa (job #2345631) | Cod sursa (job #1021642)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int MAX_N = 16005;
int n, k, a[MAX_N];
bool isGood (int val) {
int crt_sum = 0, trans = 1;
for (int i = 1; i <= n; i++)
if (crt_sum + a[i] <= val)
crt_sum += a[i];
else
crt_sum = a[i], trans++;
if (trans <= k)
return 1;
return 0;
}
int main() {
f >> n >> k;
for (int i = 1; i <= n; i++)
f >> a[i];
int lo = 1, hi = MAX_N * MAX_N, mid;
while (lo <= hi) {
mid = (lo + hi) / 2;
if (isGood (mid))
hi = mid - 1;
else
lo = mid + 1;
}
if (!isGood (mid))
mid++;
g << mid << '\n';
return 0;
}