Pagini recente » Cod sursa (job #1839542) | Cod sursa (job #1075790) | Cod sursa (job #1681235) | Cod sursa (job #1375874) | Cod sursa (job #1026837)
#include <fstream>
#include <cstring>
using namespace std;
ifstream is("transport.in");
ofstream os("transport.out");
void Read();
bool Ver(int x );
int n, a[16001], k, w, st, dr, m, nr;
char s[32010];
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;
is.get();
is.getline(s, 32010, EOF );
int l = strlen(s);
for ( int i = 0; i < l; ++i )
{
if ( s[i] == '\n')
{
if ( a[w] > st )
st = a[w];
dr += a[w];
w++;
}
else
a[w] = a[w] * 10 + s[i] - 48;
}
}
bool Ver(int x )
{
int nr = 0;
int sm = 0;
for ( int i = 0; 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;
}