Pagini recente » Cod sursa (job #1669991) | Cod sursa (job #1656064)
#include <cstdio>
using namespace std;
int v [ 16005 ] ;
int transport ( int x , int n )
{
int c = 1 , s = 0 , i ;
for ( i = 1 ; i <= n ; i ++ )
{
if ( ( v [ i ] + s ) <= x )
s = s + v [ i ] ;
else
{
++ c ;
s = v [ i ] ;
}
}
return c ;
}
int main()
{
int n , k , st , dr , i , tr , last , med ;
freopen ( "transport.in" , "r" , stdin ) ;
freopen ( "transport.out" , "w" , stdout ) ;
scanf ( "%d%d" , & n , & k ) ;
for ( i = 1 ; i <= n ; ++ i )
scanf ( "%d" , & v [ i ] ) ;
st = 1 ;
dr = n ;
while ( st <= dr )
{
med = ( st + dr ) / 2 ;
tr = 0 ;
tr = transport ( med , n ) ;
if ( tr <= k )
{
last = med ;
dr = med - 1 ;
}
else
st = med + 1 ;
}
printf ( "%d" , last ) ;
return 0;
}