Pagini recente » Cod sursa (job #728732) | Cod sursa (job #2904106) | Cod sursa (job #2095807) | Cod sursa (job #1848871) | Cod sursa (job #2805944)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k;
int a[16001];
int check(int c)
{
int aux = 0;
int t = 1;
for (int i = 0; i < n; ++i)
{
if (aux + a[i] <= c)
{
aux += a[i];
}
else
{
t++;
aux = a[i];
}
}
return t;
}
int main()
{
int a_sum = 0;
int a_max = 0;
fin >> n >> k;
for (int i = 0; i < n; ++i)
{
fin >> a[i];
a_sum += a[i];
if (a[i] > a_max)
a_max = a[i];
}
int lo = a_max;
int hi = a_sum;
int mid = 0;
while (lo < hi)
{
mid = (lo + hi) / 2;
if (check(mid) <= k)
{
hi = mid;
}
else
{
lo = mid + 1;
}
}
fout << lo;
return 0;
}