Pagini recente » Cod sursa (job #1120315) | Cod sursa (job #485593) | Cod sursa (job #1364741) | Cod sursa (job #1365448) | Cod sursa (job #2242800)
#include <fstream>
#include <algorithm>
using namespace std;
int v[16005],n,k,l,r=16000*16000,mid;
int f()
{
int drumuri = 1, s = 0;
for (int i = 1; i <= n; ++i) {
if (s + v[i] > mid) {
s = v[i];
drumuri++;
} else {
s += v[i];
}
}
if (drumuri <= k)
return 1;
return 0;
}
int lowerbound()
{
while(l<r)
{
mid=(l+r)/2;
if(f() == 1)
r=mid;
else
l=mid+1;
}
return l;
}
int main()
{
ifstream fin("transport.in");
ofstream fout ("transport.out");
fin >> n >> k;
for(int i=1;i<=n;i++)
{
fin >> v[i];
if (v[i] > l)
l = v[i];
}
fout << lowerbound();
return 0;
}