Pagini recente » Cod sursa (job #89963) | Cod sursa (job #7448) | Cod sursa (job #1687736) | Cod sursa (job #100259) | Cod sursa (job #2924554)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16005];
int
main ()
{
int n, k, maxim = -1, sum = 0, st, dr, sol, mij, k_2 = 0, transport = 0;
in >> n >> k;
for (int i = 1; i <= n; i++)
{
in >> v[i];
sum += v[i];
if (v[i] > maxim)
{
maxim = v[i];
}
}
st = maxim;
dr = sum;
sol = -1;
sum = 0;
while (st <= dr)
{
transport = 0;
mij = (st + dr) / 2;
int i = 1;
while (i != n + 1)
{
sum += v[i];
if (sum > mij)
{
i--;
transport++;
sum = 0;
}
i++;
}
if (sum != 0)
{
transport++;
sum = 0;
}
if (transport > k)
{
st = mij + 1;
}
else
{
sol = mij;
dr = mij - 1;
}
}
out << sol;
}