Pagini recente » Cod sursa (job #2316221) | Cod sursa (job #2634731) | Cod sursa (job #599548) | Cod sursa (job #422929) | Cod sursa (job #1778968)
#include <iostream>
#include <fstream>
using namespace std;
int v[16061];
int main()
{
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k,sum=0,a;
fin>>n>>k;
for (int i=1;i<=n;++i)
{
fin>>v[i];
sum+=v[i];
}
a=(sum+k-1)/k;
int s=a,d=sum,mij=(d+s)/2;
int volum=0,nr=0;
while (s<=d)
{
nr=0;
sum=0;
mij=(s+d)/2;
for (int i=1;i<=n;++i)
{
sum+=v[i];
if (sum+v[i+1]>mij)
{
nr++;
sum=0;
}
if (i==n)
{
if (sum>mij)
{
nr+=2;
}
else
{
nr++;
}
}
}
if (nr<=k)
{
d=mij-1;
volum=mij;
}
else
{
s=mij+1;
}
}
fout<<volum;
}