Pagini recente » Cod sursa (job #1041311) | Cod sursa (job #101740) | Cod sursa (job #464213) | Cod sursa (job #3169641) | Cod sursa (job #2333133)
#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 lf = 1, rg = 10000, mid;
int ans;
ans = BinaraBlana( 1, 10000 );
fout << ans << '\n';
}
int main()
{
Read();
Do();
return 0;
}