Pagini recente » Cod sursa (job #1686984) | Cod sursa (job #659957) | Cod sursa (job #2374089) | Cod sursa (job #2040430) | Cod sursa (job #1370840)
#include <iostream>
#include <cstdio>
#define n_max 16005
#define inf 0x3f3f3f3f
using namespace std;
int n,v[n_max],k,S;
void citire()
{
scanf( "%d %d" , &n , &k ) ;
for ( int i = 1 ; i <= n ; i ++ )
{
scanf( "%d" , &v[i] ) ;
S += v[i] ;
}
}
int verif( int nr )
{
int ant = 0 , p = 1 , s ;
while ( p <= n )
{
s = 0 ;
while ( p <= n && s + v[p] <= nr )
s += v[p++] ;
ant ++ ;
if ( ant > k )
return -1 ;
}
return 0 ;
}
void cautbin()
{
int f = inf ;
if ( k == 1 )
{
printf( "%d\n" , S ) ;
return ;
}
int st , dr ;
st = S / k ;
dr = 16000*16000 ;
while ( st <= dr )
{
int m = st + ( dr - st ) / 2 ;
int cond = verif(m) ;
if ( cond == 0 )
{
if ( f > m )
f = m ;
dr = m - 1 ;
}
else
st = m + 1 ;
}
printf( "%d\n" , f ) ;
}
int main()
{
freopen( "transport.in" , "r" , stdin ) ;
freopen( "transport.out" , "w" , stdout ) ;
citire() ;
cautbin() ;
return 0;
}