Pagini recente » Cod sursa (job #1851628) | Cod sursa (job #1525319) | Cod sursa (job #1801635) | Cod sursa (job #1026170) | Cod sursa (job #1473536)
#include <fstream>
using namespace std;
int binarySearch(int left, int right, int st[], int N, int K)
{
int capacity, transports, sum, i;
while (right - left > 1)
{
capacity = left + (right - left) / 2;
sum = 0;
transports = 1;
for (i = 0; i < N && transports <= K; i++)
if (sum + st[i] <= capacity)
sum += st[i];
else
sum = st[i], transports++;
if (transports > K)
left = capacity;
else
right = capacity;
}
return right;
}
int main()
{
int N, K, sum = 0;
ifstream f("transport.in");
f >> N >> K;
int st[N];
for (int i = 0; i < N; i++)
{
f >> st[i];
sum += st[i];
}
f.close();
ofstream g("transport.out");
g << binarySearch(-1, sum + 1, st, N, K);
g.close();
return 0;
}