Pagini recente » Cod sursa (job #2033745) | Cod sursa (job #3150288) | Cod sursa (job #956883) | Cod sursa (job #1346784) | Cod sursa (job #2976564)
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int v[16001];
int main()
{
int n, k, c, st, dr, m, i, max = 0, sum = 0, k_verif, sum_c = 0;
cin >> n >> k;
for (i = 1;i <= n;i++)
{
cin >> v[i];
if (v[i] > max)
{
max = v[i];
}
sum = sum + v[i];
}
st = max;
dr = sum;
while (st <= dr)
{
m = (st + dr) / 2;
k_verif = 0;
sum_c = 0;
for (i = 1;i <= n;i++)
{
sum_c = sum_c + v[i];
if (sum_c > m)
{
sum_c = 0;
i--;
k_verif++;
}
if (i == n && sum_c < m)
{
k_verif++;
}
}
if (k_verif > k)
{
st = m + 1;
}
else if (k_verif <= k)
{
c = m;
dr = m - 1;
}
}
cout << c;
return 0;
}