Pagini recente » Cod sursa (job #1552276) | Cod sursa (job #2099725) | Cod sursa (job #1390864) | Cod sursa (job #44670) | Cod sursa (job #1662844)
#include <cstdio>
using namespace std;
int v[16005];
int n,k;
int trans(int med)
{
int s=0,kp=0,i;
for(i=1;i<=n;++i)
{
if(med<v[i])
return k+1;
if(med>=s+v[i])
s=s+v[i];
else
{
kp++;
s=v[i];
}
}
return kp;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,smax=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i]);
smax+=v[i];
}
int st,dr,med,last,mtrans;
st=1;
dr=smax;
last=dr+1;
while(st<=dr)
{
med=(st+dr)>>1;
mtrans=trans(med);
if(mtrans<=k)
{
dr=med-1;
if(last>med)
last=med;
}
else
st=med+1;
}
printf("%d\n",last+1);
return 0;
}