Pagini recente » Cod sursa (job #665821) | Cod sursa (job #2679755) | Cod sursa (job #3228413) | Cod sursa (job #3138570) | Cod sursa (job #1026029)
#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;
for ( int i = 0; i < n; ++i )
{
if ( v[i] > m ) return false;
s += v[i];
if ( s > m )
{
cnt++;
s = 0;
}
if ( cnt > k ) return false;
}
return true;
}