Pagini recente » Cod sursa (job #3030712) | Cod sursa (job #161593) | Cod sursa (job #1687219) | Cod sursa (job #1586153) | Cod sursa (job #398720)
Cod sursa(job #398720)
#include<stdio.h>
const int N=16005;
int v[N],n,t,m,max;
void read()
{
scanf("%d%d",&n,&t);
for( int i=1 ; i<=n ; ++i )
{
scanf("%d",&v[i]);
m+=v[i];
if(v[i]>max)
max=v[i];
}
}
bool check( int x )
{
int act=0,ct=t;
for( int i=1 ; i<=n ; ++i )
if( v[i]+act <= x )
act+=v[i];
else
{
ct--;
if(ct==0)
return 0;
act=v[i];
}
return 1;
}
void caut()
{
int i,step;
for( step=1 ; step<m ; step<<=1 );
for( i=m ; step ; step>>=1 )
if( i-step>=max && check(i-step)==1 )
i-=step;
printf("%d",i);
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
read();
caut();
return 0;
}