Pagini recente » Cod sursa (job #1005714) | Profil IoanHerbil | Cod sursa (job #991017) | Cod sursa (job #1808448) | Cod sursa (job #2807645)
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
const int MAX = 1e5 + 14;
int v [MAX];
int main()
{
int n,k, suma = 0;
cin >> n >> k;
for (int i =1; i<= n; ++i)
{
cin >> v[i];
suma += v [i];
}
int st = 1;
int dr = suma;
int sol = suma;
while (st <= dr)
{
int mid = (st+dr) / 2;
int tr = 1;
int p = 1;
int s = 0;
while (p <= n and tr <= k)
{
if (v[p] > mid)
{
tr = k + 1;
break;
}
if (s + v [p] <= mid)
s += v [p ++];
else
{
tr += 1;
s = v [p ++];
}
}
if (tr <= k)
{
sol = mid;
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
cout << sol << '\n';
return 0;
}