Pagini recente » Cod sursa (job #2877956) | Cod sursa (job #1157082) | Cod sursa (job #527543) | Cod sursa (job #2524947) | Cod sursa (job #2238633)
#include <cstdio>
#define max(a, b) a >= b ? a : b
using namespace std;
int n, k, step, sol, low, high, mid, v[16005];
bool test(int c)
{
int t = 0;
int s = 0;
for (int i = 1; i <= n && t <= k; ++i) {
if (s + v[i] <= c) s += v[i];
else {
++t;
s = v[i];
}
}
if (t) ++t;
if (t <= k) return 1;
return 0;
}
int main()
{
FILE *in, *out;
in = freopen("transport.in", "r", stdin);
out = freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; ++i) {
scanf("%d", &v[i]);
high += v[i];
low = max(low, v[i]);
}
fclose(in);
while (low <= high) {
mid = low + (high - low) / 2;
if (test(mid)) {
sol = mid;
high = mid - 1;
}
else low = mid + 1;
}
printf("%d", sol);
fclose(out);
return 0;
}