Pagini recente » Cod sursa (job #1012925) | Cod sursa (job #2166099) | Cod sursa (job #489111) | Cod sursa (job #459285) | Cod sursa (job #1027388)
#include <fstream>
#include <cstring>
using namespace std;
ifstream is("transport.in");
ofstream os("transport.out");
void Read();
bool Ver(int x );
int n, a[16002], k, st, dr, m, nr;
char s[32020];
int main()
{
Read();
while ( st <= dr )
{
m = (st+dr)/2;
if ( Ver(m) )
{
nr = m;
dr = m-1;
}
else
st = m+1;
}
os << nr;
is.close();
os.close();
return 0;
}
void Read()
{
is >> n >> k;
for ( int i = 1; i <= n; ++i )
{
is >> a[i];
if ( a[i] > st )
st = a[i];
dr += a[i];
}
}
bool Ver(int x )
{
int nr = 0;
int sm = 0;
for ( int i = 1; i <= n; i++ )
if ( sm + a[i] <= x )
{
sm += a[i];
if ( i == n-1 )
nr++;
}
else
{
sm = a[i];
nr++;
if ( i == n-1 )
nr++;
}
if ( nr <= k )
return true;
return false;
}