Pagini recente » Cod sursa (job #1460780) | Cod sursa (job #2389458) | Cod sursa (job #1828858) | Cod sursa (job #2069886) | Cod sursa (job #1026631)
#include<fstream>
using namespace std;
ifstream is("transport.in");
ofstream os("transport.out");
int n, k, m, s, sum, cnt;
int st = -20000, dr;
int v[16001];
bool Check(int m);
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;
else
st = m+1;
}
os << st;
is.close();
os.close();
return 0;
}
bool Check(int m)
{
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;
}