Pagini recente » Cod sursa (job #2318316) | Cod sursa (job #2744634) | Monitorul de evaluare | Cod sursa (job #2644623) | Cod sursa (job #3262008)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int main()
{
int n, k, i, mini = -1, maxi = 0, v[16001];
cin >> n >> k;
for (i=1; i<=n; i++)
{
cin >> v[i];
if (mini < v[i])
mini = v[i];
maxi += v[i];
}
int s = 0, sol, st = mini, dr = maxi, m, t;
while (st <= dr)
{
m = (st+dr) / 2;
s = 0;
t = 1;
for (i=1;i<=n;i++)
{
if (s+v[i] <= m)
s += v[i];
else
{
s = v[i];
t++;
}
}
if (t <= k)
{
sol = m;
dr = m - 1;
}
else
st = m + 1;
}
cout << sol;
return 0;
}