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