Pagini recente » Cod sursa (job #447960) | Cod sursa (job #709602) | Cod sursa (job #1653017) | Cod sursa (job #835820) | Cod sursa (job #2333137)
#include <fstream>
using namespace std;
ifstream fin( "transport.in" );
ofstream fout( "transport.out" );
const int NMAX = 16005;
const int INF = 2000000000;
int N, K;
int val[NMAX];
void Read()
{
fin >> N >> K;
for( int i = 1; i <= N; ++i )
fin >> val[i];
fin.close();
}
bool Check( int cap )
{
int trucks = 0;
int curent;
for( int i = 1; i <= N; ++i )
{
curent = 0;
while( curent + val[i] <= cap && i <= N )
{
curent += val[i];
++i;
}
trucks++;
i--;
if( trucks > K ) return false;
}
return true;
}
int BinaraBlana( int lf, int rg )
{
if( lf > rg ) return INF;
int mid = ( lf + rg ) / 2;
if( Check( mid ) ) return min( mid, BinaraBlana( lf, mid - 1 ) );
else return BinaraBlana( mid + 1, rg );
}
void Do()
{
int ans = BinaraBlana( 1, 16000 * 16000 + 5 );
fout << ans << '\n';
}
int main()
{
Read();
Do();
return 0;
}