Pagini recente » Cod sursa (job #1173306) | Cod sursa (job #1456912) | Cod sursa (job #2665933) | Cod sursa (job #3148285) | Cod sursa (job #1147540)
#include <fstream>
using namespace std;
const int Nmax = 16005;
int N, K, A[Nmax];
inline bool fun(int Cap)
{
int current = 0, cnt = 1;
for (int i = 0; i < N; i++)
if (current + A[i] <= Cap)
current += A[i];
else { current = A[i]; cnt++; }
return cnt <= K;
}
int binary(int low, int high, int val)
{
int mid;
bool ok;
while (low < high)
{
mid = low + (high - low) / 2;
ok = fun(mid);
if (ok) high = mid;
else low = mid+1;
}
return low;
}
int main()
{
ifstream f ("transport.in");
ofstream g ("transport.out");
f >> N >> K;
int low = -1, high = 0;
for (int i = 0; i < N; i++) {
f >> A[i];
high += A[i];
low = A[i] > low ? A[i] : low;
}
g << binary(low, high, K) << '\n';
return 0;
}