Pagini recente » Cod sursa (job #1012042) | Cod sursa (job #271647) | Cod sursa (job #968038) | Cod sursa (job #1929128) | Cod sursa (job #816861)
Cod sursa(job #816861)
#include<stdio.h>
using namespace std;
int v[16001],n;
long verificare(long cap)
{int p=0,i=1;
long s1=0;
while(i<=n){
if(s1+v[i]>cap)
{s1=0;
p++;
}
else
{s1+=v[i];
if(s1==cap || i==n)
{s1=0;
p++;
}
i++;}
}
return p;
}
int main()
{int k,i,min,max=0;
long s=0,m,nr,sol;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
if(v[i]>=max)
max=v[i];
s+=v[i];
}
min=v[1]-1;
s+=1;
while(min<=s){
m=(min+s)/2;
nr=verificare(m);
if(nr<=k)
s=m-1;
else
min=m+1;
}
if(nr==k)
printf("%ld",m);
else
printf("%d",max);
return 0;
}