Pagini recente » Grigore Moisil 2016 | Mihnea Andreescu | Tabele hash - prezentare detaliata | Profil shantih1 | Cod sursa (job #1274414)
#include <stdio.h>
int v[16005];
int n,k;
int ok(int c)
{
int tr=0,s=0,i;
for(i=1;i<=n;i++){
if(v[i]>c)
return 0;
s=s+v[i];
if(s>=c)
{
tr++;
s=v[i];
}}
if(s>0)
tr++;
return (tr<=k);
}
int bsl(int st,int dr)
{
int med,last=n+1;
while(st<=dr)
{
med=(st+dr)>>1;
if(ok(med))
{
dr=med-1;
last=med;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,smax,ans;
scanf("%d%d",&n,&k);
smax=0;
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
smax+=v[i];
}
ans=bsl(1,smax);
printf("%d",ans-1);
return 0;
}