Pagini recente » Cod sursa (job #2610418) | Cod sursa (job #891848) | Cod sursa (job #2586520) | Cod sursa (job #238099) | Cod sursa (job #1785128)
#include <cstdio>
int x[16010];
int main()
{
FILE *fin,*fout;
int i,s,s1,max1,st,dr,m,nr,k,n;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin,"%d%d", &n, &k);
s1=max1=0;
for (i=1;i<=n;i++) {
fscanf(fin,"%d", &x[i]);
s1+=x[i];
if (x[i]>max1)
max1=x[i];
}
st=max1;
dr=s1;
while (dr>st) {
nr=s=0;
m=(st+dr)/2;
for (i=1;i<=n;i++)
if (x[i]+s<=m)
s+=x[i];
else
s=x[i],nr++;
if (nr<k)
dr=m-1;
else
st=m+1;
}
fprintf(fout,"%d", st);
return 0;
}