Pagini recente » Cod sursa (job #1057007) | Cod sursa (job #1773895) | Cod sursa (job #1618393) | Cod sursa (job #567821) | Cod sursa (job #886799)
Cod sursa(job #886799)
#include<cstdio>
#define NMAX 16001
using namespace std;
int v[NMAX],n,k;
bool good ( int capacity)
{
int nr=0;
int s=0;
for( int i(1); i <= n && nr <=k ; ++i)
{
if(s+v[i] <= capacity)
s+=v[i];
else
{
s=0;
++nr;
--i;
}
}
if(s!=0)
++nr;
if(nr>k)
return 0;
else return 1;
}
int search()
{
int lo=1;
int hi=NMAX*NMAX;
int mid;
int result;
while( lo <= hi )
{
mid=(hi+lo)/2;
if( good(mid) == 1 )
{
result = mid;
hi=mid-1;
}
else
{
lo=mid+1;
}
}
return result;
}
int main()
{
freopen("transport.in","r",stdin);
scanf("%d%d",&n,&k);
for( int i(1); i <= n ; ++i )
scanf("%d",&v[i]);
fclose(stdin);
freopen("transport.out","w",stdout);
printf("%d",search());
fclose(stdout);
return 0;
}