Pagini recente » Cod sursa (job #2843078) | Cod sursa (job #1243223) | Cod sursa (job #1294311) | Cod sursa (job #5159) | Cod sursa (job #981392)
Cod sursa(job #981392)
#include <cstdio>
#define FIN "transport.in","r",stdin
#define FOUT "transport.out","w",stdout
using namespace std;
int n,k,a[16005],i;
long long st,dr,mid,nr,sol;
long long check(long long max_capacity,long long capacity, int vf)
{
if(!vf)return 1;
if(a[vf]>max_capacity)return dr+check(max_capacity,capacity,0);
if(capacity+a[vf]<=max_capacity) return check(max_capacity,capacity+a[vf],vf-1);
return 1+check(max_capacity,0,vf);
}
int main()
{
freopen(FIN);
freopen(FOUT);
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]),dr+=a[i];
dr*=2;
st=1;
sol=-1;
while(st<=dr)
{
mid=(st+dr)/2;
nr=check(mid,0,n);
if(nr<=k)dr=mid-1,sol=mid;
else st=mid+1;
}
printf("%lld",sol);
return 0;
}