Pagini recente » Cod sursa (job #2403590) | Cod sursa (job #1922203) | Cod sursa (job #926596) | Cod sursa (job #620290) | Cod sursa (job #1026825)
#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 = 2;
int sm = 0;
for ( int i = 1; i < w+1; ++i )
{
if ( sm + a[i] <= m )
sm += a[i];
else
{
sm = a[i];
nr++;
}
}
if ( nr <= k )
return true;
return false;
}