Pagini recente » Istoria paginii runda/ada26/clasament | Cod sursa (job #163740) | Statistici Cristian Zizu (CristianZizu) | Cod sursa (job #773192) | Cod sursa (job #355953)
Cod sursa(job #355953)
#include<stdio.h>
#define DIM 16005
int n,k,a[DIM];
int check (int x)
{
int sum=0,q=0,i;
for(i=1;i<=n;++i)
{
if(sum+a[i]>x)
sum=a[i],++q;
else
sum+=a[i];
if(q>k)
return 0;
}
return 1;
}
int solve (int st,int dr)
{
int mij,min=dr;
while(st<=dr)
{
mij=(st+dr)/2;
if(check(mij))
min=mij,dr=mij-1;
else
st=mij+1;
}
return min+1;
}
int main ()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,sum=0,max=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
sum+=a[i];
if(max<a[i])
max=a[i];
}
printf("%d",solve (max,sum));
return 0;
}