Pagini recente » Cod sursa (job #2103379) | Cod sursa (job #1245900) | Monitorul de evaluare | Cod sursa (job #2785540) | Cod sursa (job #3204080)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, saltele[16005], st, dr, mid, ans;
bool functie(int x)
{
int S = 0, grupe = 0;
for (int i = 0; i < n; i++)
{
if (S + saltele[i] <= x)
S += saltele[i];
else
{
S = saltele[i];
grupe++;
}
}
if (grupe + 1 <= k)
return true;
else
return false;
}
int main()
{
fin >> n >> k;
for (int i = 0; i < n; i++)
{
fin >> saltele[i];
dr += saltele[i];
st = max(saltele[i], st);
}
int sum = dr;
while (st <= dr)
{
mid = (st + dr) / 2;
if (functie(mid))
{
ans = mid;
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
fout << ans;
return 0;
}