Pagini recente » Cod sursa (job #2988011) | Cod sursa (job #597309) | Cod sursa (job #36309) | Cod sursa (job #2737407) | Cod sursa (job #1802307)
#include <fstream>
#define nMax 16007
using namespace std;
ifstream in ("transport.in");
ofstream out("transport.out");
int n, k, toplam, dr ,st, v[nMax], maxim, mij, meh, cevap;
int main()
{
in >> n >> k;
for(int i = 1; i <= n; ++i)
{
in >> v[i];
maxim = max(maxim, v[i]);
toplam+= v[i];
}
st = maxim;
dr = toplam;
while(st <= dr)
{
mij = (st + dr) / 2;
toplam = 0;
meh = 1;
for(int i = 1; i <= n; ++i)
{
if(toplam + v[i] <= mij)
{
toplam+= v[i];
}
else
{
++meh;
toplam = v[i];
}
}
if(k >= meh)
{
cevap = mij;
dr = mij - 1;
}
else
{
st = mij + 1;
}
}
out << cevap;
}