Pagini recente » Cod sursa (job #3261081) | Cod sursa (job #961203) | Cod sursa (job #1542311) | Cod sursa (job #3279282)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005], k, n;
bool check(int x)
{
int s = 0, cnt = 0;
for (int i = 1; i <= n; i++)
{
if (s + a[i] <= x) s += a[i];
else
{
cnt++;
s = a[i];
}
}
if (s) cnt++;
if (cnt <= k) return 1;
return 0;
}
int main()
{
int i, st, dr = 0, mij, sol, ma = 0;
fin >> n >> k;
for (i = 1; i <= n; i++)
{
fin >> a[i];
dr += a[i];
ma = max(ma, a[i]);
}
st = ma;
while (st <= dr)
{
mij = (st + dr) / 2;
if (check(mij))
{
sol = mij;
dr = mij - 1;
}
else st = mij + 1;
}
fout << sol;
return 0;
}