Pagini recente » Cod sursa (job #387212) | Cod sursa (job #2398759) | Cod sursa (job #707094) | Cod sursa (job #1816070) | Cod sursa (job #1473561)
#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, maxV = 0;
ifstream f("transport.in");
f >> N >> K;
int st[N];
for (int i = 0; i < N; i++)
{
f >> st[i];
sum += st[i];
maxV = max(maxV, st[i]);
}
f.close();
ofstream g("transport.out");
g << binarySearch(maxV - 1, sum + 1, st, N, K);
g.close();
return 0;
}