Pagini recente » Cod sursa (job #2439869) | Arhiva de probleme | Cod sursa (job #1489671) | Cod sursa (job #2999469) | Cod sursa (job #829632)
Cod sursa(job #829632)
#include<cstdio>
using namespace std;
int maxi,mini,s,m,c,nrt,n,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=0;
ld=s1+1;
while(ls<=ld)
{
m=(ls+ld)/2;
s=0;
c=0;
nrt=1;
for(i=1;i<=n;i++)
if((s+x[i])>m)
{
nrt++;
s=x[i];
}
else
s=s+x[i];
if(nrt<=k)
{
ld=m-1;
c=m;
}
else
ls=m+1;
}
/* if(c<maxi)
c=maxi;
if(c>s1)
c=s1;
*/
printf("%d",c);
return 0;
}