Mai intai trebuie sa te autentifici.
Cod sursa(job #1656064)
Utilizator | Data | 18 martie 2016 18:02:57 | |
---|---|---|---|
Problema | Transport | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.91 kb |
#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;
}