Pagini recente » Cod sursa (job #2648115) | Cod sursa (job #1180374) | Cod sursa (job #1715768) | Cod sursa (job #999614) | Cod sursa (job #1737866)
#include <cstdio>
using namespace std;
int n,k,v[16003];
int ok(int mid)
{
int cc = mid - v[1];
int ii = 1;
for (int i=2;i<=n;i++)
if (cc >= v[i])
cc -= v[i];
else {
ii++;
cc = mid - v[i];
}
if (ii <= k)
return 1;
else
return 0;
/*
int s,ii=0,kk=k;
for(;kk&&ii<=n;kk--)
{
s=0;
while((s+v[ii+1])<=mid&&ii<=n)
{
ii++;
s+=v[ii];
}
}
if(ii<n) return 0;
return 1;
*/
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
int maxx=0,sum=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
if(maxx<v[i])
maxx=v[i];
sum+=v[i];
}
int ls,ld,mid;
ls=maxx;ld=sum;
while(ls<=ld)
{
mid=(ls+ld)/2;
if(ok(mid))
ld=mid-1;
else
ls=mid+1;
}
printf("%d",ls);
/*for(int i=maxx;i<=sum;i++)
printf("%d - %d\n",i,ok(i));*/
return 0;
}