Pagini recente » Cod sursa (job #2747591) | Cod sursa (job #74587) | Cod sursa (job #350943) | Istoria paginii runda/oni-2009-ix/clasament | Cod sursa (job #3245931)
//#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 = 0, aux;
cin >> n >> k;
for (i = 1;i <= n;i++)
{
cin >> v[i];
}
while (st < dr)
{
m = (st + dr) / 2;
ok = 0;
ok1 = 0;
s = 0;
nr_trans = 1;
for (i = 1;i <= n;i++)
{
if (v[i] > m)
{
ok = 1;
break;
}
if (s + v[i] <= m)
{
s = s + v[i];
}
else if (s + v[i] > m)
{
nr_trans++;
s = v[i];
}
}
//cout << m << " " << nr_trans << " " << st << " " << dr << endl;
aux = st;
if (nr_trans >= k)
{
st = m + 1;
}
if (ok1 == 1)
{
st = m + 1;
}
else if (nr_trans < k)
{
dr = m - 1;
}
}
cout << aux;
return 0;
}