Pagini recente » Cod sursa (job #673238) | Cod sursa (job #279908) | Cod sursa (job #1336607) | Cod sursa (job #3004495) | Cod sursa (job #391876)
Cod sursa(job #391876)
#include <cstdio>
#define NMAX 16005
#define VOLMAX 256000005
int N,K;
int e[NMAX];
void citire()
{
scanf("%d%d",&N,&K);
for(int i=1;i<=N;i++)
scanf("%d",&e[i]);
}
int ok(int x)
{
int a=0,p=1;
for(int i=1;i<=N;i++)
{
if(e[i]>x)
return 0;
if(a+e[i]<=x)
a+=e[i];
else
a=e[i],p++;
}
if(p<=K)
return 1;
return 0;
}
int cautare_binara()
{
int p=1,a=0;
while((p<<1)<=VOLMAX)
p<<=1;
while(p)
{
if(!ok(a+p))
a+=p;
p>>=1;
}
return a+1;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
citire();
printf("%d",cautare_binara());
return 0;
}