Pagini recente » Cod sursa (job #3246061) | Cod sursa (job #436686) | Cod sursa (job #2188756) | Cod sursa (job #2403131) | Cod sursa (job #3245971)
#include <fstream>
//#include <iostream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int v[16001];
int main()
{
int n, k, i, st = 1, dr = 16000 * 16000, m, s, nr_trans = 0, ok = 0,ok1 = 1, aux, max = 1;
cin >> n >> k;
for (i = 1;i <= n;i++)
{
cin >> v[i];
if (max < v[i])
{
max = v[i];
}
}
st = max;
while (st <= dr)
{
m = (st + dr) / 2;
ok = 0;
s = 0;
nr_trans = 1;
for (i = 1;i <= n;i++)
{
if (v[i] > m)
{
ok = 1;
}
if (s + v[i] <= m)
{
s = s + v[i];
}
else if (s + v[i] > m && v[i] <= m)
{
nr_trans++;
s = v[i];
}
}
//cout << m << " " << nr_trans << " " << st << " " << dr << endl;
aux = m;
if (nr_trans > k && ok == 0)
{
st = m + 1;
}
else if (nr_trans <= k && ok == 0)
{
dr = m - 1;
}
else if (ok == 1)
{
st = m + 1;
}
}
cout << aux;
return 0;
}