Pagini recente » Cod sursa (job #798884) | Cod sursa (job #1010084) | Rating Andrei Grigore (Andrei1004) | Cod sursa (job #2863460) | Cod sursa (job #2223768)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int NMAX = 16005;
int v[NMAX],n,k;
int nr_trans(int c)
{
int vol=0,nrt=0;
for(int i=1;i<=n;i++)
{
if(vol+v[i]<=c)
vol+=v[i];
else
{
nrt++;
vol=v[i];
}
}
if(vol!=0)
nrt++;
return nrt;
}
int main()
{
int maxim = 0;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>v[i];
maxim=max(maxim, v[i]);
}
int st=maxim,dr=1000000000,mij=0,sol=0,nrt=0;
while(st<=dr)
{
mij=(st+dr)/2;
nrt=nr_trans(mij);
if(nrt<=k)
{
sol=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
cout<<sol;
return 0;
}