Pagini recente » Cod sursa (job #3039118) | Cod sursa (job #2419812) | Cod sursa (job #3209404) | Cod sursa (job #3250550) | Cod sursa (job #1710619)
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
void bs(int);
int n, k, i, sm, cmx, rasp, nrt, c, mx, v, u, t;
int l[16005];
int main(void)
{
freopen("transport.in", "r", stdin);
freopen("transport.out","w",stdout);
fin>>n>>k;
for (i = 1; i <= n; ++i)
{
fin>>l[i];
sm += l[i];
mx = l[i] > mx? l[i]: mx;
}
cmx = v = (sm >> 1);
u = t = sm;
bs(cmx);
fout<<rasp;
return 0;
}
void bs(int sm)
{
int m;
if (sm < mx)
nrt = k + 1;
else
{
for (i = 1, nrt = c = 0; i <= n && nrt <= k;)
{
c += l[i];
if (c > sm)
{
nrt++;
c = 0;
}
else
++i;
}
++nrt;
}
v >>= 1;
if (nrt <= k)
{
u = rasp = sm;
m = (sm + 1) >> 1;
if (m > 0 && m != sm)
bs(m);
}
else
{
m = (sm + u) >> 1;
if (m != sm)
bs(m);
}
}