Pagini recente » Cod sursa (job #2339542) | Cod sursa (job #2865459) | Cod sursa (job #2431121) | Cod sursa (job #1315591) | Cod sursa (job #331917)
Cod sursa(job #331917)
#include<stdio.h>
int a[16001],i,k,n,dr,st,max,s,mij,rez;
int verifica(int x)
{
int i,sum=0,nr=0;
for(i=1;i<=n;i++) { if(sum+a[i]<=x) sum+=a[i];
else if(sum+a[i]>x) { nr++;
sum=a[i];
}
}
nr++;
if(nr<=k) return 1;
return 0;
}
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]);
if(a[i]>max) max=a[i];
s+=a[i];
}
st=max;
dr=s;
while(st<=dr) { mij=(st+dr)/2;
if(verifica(mij)) { dr=mij-1;
rez=mij;
}
else st=mij+1;
}
printf("%d\n",rez);
fclose(stdin);
fclose(stdout);
return 0;
}