Pagini recente » Cod sursa (job #60488) | Cod sursa (job #1030265) | Cod sursa (job #2617887) | Cod sursa (job #1003925) | Cod sursa (job #829611)
Cod sursa(job #829611)
#include<cstdio>
using namespace std;
int maxi,mini,s,m,c,nrt,n,ok
,i,ls,ld,k,s1,x[16001];
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&n,&k);
maxi=0;
s=0;
mini=16000;
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
if(x[i]>maxi)
maxi=x[i];
s1=s1+x[i];
}
ls=maxi;
ld=s1;
while(ls<=ld)
{
m=(ls+ld)/2;
s=0;
c=0;
nrt=0;
for(i=1;i<=n;i++)
if((s+x[i])>m)
{
nrt++;
s=x[i];
ok=1;
}
else
{
s=s+x[i];
ok=0;
}
if(ok==1)
nrt++;
if(nrt<=k)
{
ld=m-1;
c=m;
}
else
ls=m+1;
}
if(nrt<=k)
c=m;
// if(c<maxi)
// c=maxi;
// if(c>s1)
// c=s1;
printf("%d",c);
return 0;
}