Pagini recente » Cod sursa (job #2569918) | Cod sursa (job #3225481) | Cod sursa (job #2602068) | Cod sursa (job #882487) | Cod sursa (job #354818)
Cod sursa(job #354818)
#include <stdio.h>
int k,n,i,st,dr,mij,sol;
int a[16100];
inline bool ok(int x)
{
int ant=0, nr=1;
for (i=1; i<=n; i++){
if (a[i]>x) return false;
if (ant+a[i]>x){
nr++;
ant=a[i];
}
else
ant+=a[i];
}
if (!ant) nr--;
return (nr<=k);
}
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",&a[i]);
dr+=a[i];
}
st=0;
while (st<=dr){
mij=(st+dr)/2;
if (ok(mij)){
sol=mij;
dr=mij-1;
}
else st=mij+1;
}
printf("%d\n",sol);
return 0;
}