Pagini recente » Cod sursa (job #1565019) | Cod sursa (job #30664) | Cod sursa (job #2355372) | Cod sursa (job #870957) | Cod sursa (job #494095)
Cod sursa(job #494095)
#include<stdio.h>
int n,k,i,j,smin,s=0,v[16010];
int sol(int t)
{
int i,j=0,st=1,dr=s,m,z=0;
smin=s;
while(st<=dr)
{
m=(st+dr)/2;
for(i=1;i<=n;i++)
{
if(z+v[i]<=m)z+=v[i];
else
{
z=0;
j++;
i--;
}
if(i==n)j++;
if(j>t)break;
}
if(j<=t)
{
if(m<smin)
{
smin=m;
dr=smin-1;
}
}else
{
st=m+1;
}
j=0;
z=0;
}
return smin;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
s+=v[i];
}
sol(k);
printf("%d",smin);
return 0;
}