Pagini recente » Cod sursa (job #1916997) | Cod sursa (job #2453162) | Cod sursa (job #2894224) | Cod sursa (job #1737980) | Cod sursa (job #2890545)
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, step, Max, v[17005], i, Min, sum;
bool check(int x)
{
int cnt = 0, cr = 0;
for (int i = 1; i <= n; i++) {
if (cr + v[i] > x) {
cnt++;
cr = v[i];
}
else
cr += v[i];
}
if (cr > 0)
cnt++;
return cnt <= k;
}
int main()
{
in>>n>>k;
for (int i = 1; i <= n; i++) {
in>>v[i];
Max = max(Max, v[i]);
sum += v[i];
}
for(step = 1; step <= sum; step <<= 1);
for (i = Max - 1; step; step >>= 1)
if (check(i + step) == 0 && i + step <= sum) {
i += step;
}
out<<i + 1;
}