Pagini recente » Cod sursa (job #1487230) | Cod sursa (job #1889700) | Cod sursa (job #466577) | Cod sursa (job #2135630) | Cod sursa (job #312447)
Cod sursa(job #312447)
#include<cstdio>
#define MAXN 16100
int Sum , i , j , N , max , K , A[MAXN];
int test( int x )
{
int transport = 0 , turn = 0;
for( i =1 ; i <= N ;)
{
transport = 0;
while (transport + A[i] <= x )
{
transport += A[i];
i++;
}
turn ++;
}
if ( turn <= K ) return 1;
return 0;
}
int search(int left , int right)
{
int last = left , mid ;
for( ; left <= right ;)
{
mid = ( left + right ) / 2;
if( test ( mid ) )
{
last = mid;
right = mid - 1;
}
else left = mid + 1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&N ,&K);
for( i = 1 ; i <= N ; i ++)
{
scanf("%d",&A[i]);
Sum += A[i];
if ( A[i] > max ) max = A[i];
}
printf("%d\n",search(max, Sum));
return 0;
}