Pagini recente » Cod sursa (job #2008673) | Cod sursa (job #1139466) | Cod sursa (job #1682784) | bpc9 | Cod sursa (job #678431)
Cod sursa(job #678431)
#include <fstream>
#include <vector>
using std::vector;
int main()
{
std::ifstream in("transport.in");
std::ofstream out("transport.out");
int N,K;
in >> N >> K;
vector<int> cap(N);
for(int i=0;i<N;++i)
in >> cap[i];
int lb = cap[0], ub = cap[0];
for(int i=1;i<N;++i)
lb = std::max(lb,cap[i]), ub += cap[i];
int sol;
while(lb <= ub)
{
int c = (lb + ub) >> 1;
int k = 1;
for(int s = 0, i = 0; i < N; ++i)
{
if(s + cap[i] <= c)
s += cap[i];
else s = cap[i], k++;
}
if(k > K) //capacitate prea mica
lb = c + 1;
else sol = c, ub = c - 1;
}
out << sol;
return 0;
}