Pagini recente » Cod sursa (job #1251621) | Cod sursa (job #1727371) | Cod sursa (job #539663) | Cod sursa (job #290612) | Cod sursa (job #1094973)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int Nmax = 16e3 + 100;
int N, K, S, LG, V[Nmax], maxim;
int OK(int x)
{
int cap = 0, nr = 1;
for(int i = 1; i <= N; i++)
{
cap += V[i];
if(cap > x)
{
cap = V[i];
nr++;
}
}
return nr;
}
int main()
{
fin >> N >> K;
for(int i = 1; i <= N; i++)
{
fin >> V[i];
S += V[i];
maxim = max(maxim, V[i]);
}
for(LG = 1; LG <= S; LG <<= 1);
int i, lg;
for(i = S,lg = LG; lg; lg >>= 1)
if(i - lg >= maxim && OK(i - lg) <= K)
i -= lg;
fout << i;
return 0;
}