Pagini recente » Cod sursa (job #2899907) | Cod sursa (job #512706) | Cod sursa (job #3195234) | Cod sursa (job #553888) | Cod sursa (job #2157497)
#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)
{
printf("%d",med);
return 0;
}
if ( tr < k )
{
last = med ;
dr = med - 1 ;
}
else
st = med + 1 ;
}
printf ( "%d", last ) ;
return 0;
}