Pagini recente » Cod sursa (job #1753683) | Cod sursa (job #1802948) | Cod sursa (job #2380342) | Cod sursa (job #2194611) | Cod sursa (job #1789813)
#include <iostream>
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;
int lim,mn;
int n, k, p, n1, n2, v[16005];
ifstream f("transport.in");
ofstream g("transport.out");
int Test(int val)
{
int i, nrbuc = 0, left = -1;
for (i = 1; i <= n; i++)
{ if (v[i] <= left) left -= v[i];
else
{ nrbuc++;
if (nrbuc > k) return nrbuc;
left = val - v[i];
}
}
return nrbuc;
}
void Cbin()
{
int st = mn, dr = lim, mid;
while (st < dr)
{
mid = (st + dr) / 2;
if (Test(mid) <= k) dr = mid - 1; else st = mid + 1;
}
mid = (st + dr) / 2;
if (Test(mid)>k) mid++;
g << mid << "\n";
}
int main()
{
int i;
f >> n >> k;
for (i = 1; i <= n; i++)
{
f >> v[i];
mn = max(mn, v[i]);
lim += v[i];
}
Cbin();
return 0;
}