Pagini recente » Cod sursa (job #2305389) | Cod sursa (job #2971209) | Cod sursa (job #378241) | Cod sursa (job #1429090) | Cod sursa (job #1026600)
#include<fstream>
using namespace std;
ifstream is("transport.in");
ofstream os("transport.out");
int n, k, x, m, s, sum, cnt = 1, maxim = -20000;
int st, dr;
int v[16001];
bool Check(int x);
int main()
{
is >> n >> k;
for ( int i = 1; i <= n; ++i )
{
is >> v[i];
if ( v[i] > st )
st = v[i];
sum += v[i];
}
dr = sum;
while ( st < dr )
{
m = (st + dr)/2;
if ( Check(m))
dr = m-1;
else
st = m+1;
}
os << st;
is.close();
os.close();
return 0;
}
bool Check(int x)
{
s = 0;
cnt = 1;
for ( int i = 1; i <= n; ++i )
{
if ( s + v[i] <= m )
s += v[i];
else
{
s = v[i];
cnt++;
}
if ( cnt > k ) return false;
}
return true;
}