Pagini recente » Cod sursa (job #1279470) | Cod sursa (job #1087271) | Monitorul de evaluare | Cod sursa (job #104298) | Cod sursa (job #63432)
Cod sursa(job #63432)
#include <cstdio>
using namespace std;
#define pow(q) (1<<(q))
int v[16100],n;
int nr(int cap)
{
++n;
int tmp = 0, ret = 1, i;
for(i=1;i<=n;++i)
{
tmp+=v[i];
if(tmp > cap)
tmp=v[i], ++ret;
}
--n;
return ret;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,tmp,S=0,k,t=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i]);
if(v[i] > t)
t = v[i];
S += v[i];
}
for(i=31;i>=0;--i)
if(t + pow(i) <= S)
{
tmp = nr(t+pow(i));
if(tmp>k)
t+=pow(i);
}
while(t <= S && nr(t) != k) ++t;
printf("%d\n",t);
return 0;
}