Pagini recente » Cod sursa (job #958863) | Cod sursa (job #2119791) | Cod sursa (job #2026126) | Cod sursa (job #2100478) | Cod sursa (job #2052510)
#include <fstream>
using namespace std;
ifstream cin ("transport.in") ;
ofstream cout ("transport.out") ;
int v [ 16001 ] ;
int main()
{
int n, k ;
cin >> n >> k ;
int st , dr, md , maxx = 0, sum = 0, sumnr = 0 ;
for ( int i = 1 ; i <= n ; i ++ )
{
cin >> v [ i ] ;
sum += v [ i ] ;
if ( v [ i ] > maxx )
maxx = v [ i ] ;
}
int cate = 0 ;
int val ;
st = maxx ; dr = sum ;
while ( st <= dr )
{
cate = 1 ;
sumnr = 0 ;
md = ( st + dr ) / 2 ;
for ( int i = 1 ; i <= n ; i ++ )
{
if ( v [ i ] + sumnr <= md )
sumnr += v [ i ] ;
else
{
cate ++ ;
sumnr = v [ i ] ;
}
}
if ( cate <= k )
{
dr = md - 1 ;
val = md ;
}
else
st = md + 1 ;
}
cout << val ;
return 0;
}