Pagini recente » Cod sursa (job #177104) | Cod sursa (job #184821) | Cod sursa (job #489051) | Cod sursa (job #421751) | Cod sursa (job #2028057)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, a[16001], i, s;
int maxim, l, mid, r;
bool verif(int x)
{
int i, s, z = 0;
for (i = 1; i <= n;)
{
s = 0;
while (s+a[i] <= x)
s += a[i], i++;
z++;
}
if (z <= k)
return 1;
return 0;
}
int main()
{
f >> n >> k;
for (i = 1; i <= n; i++)
{
f >> a[i];
s += a[i];
if (maxim < a[i])
maxim = a[i];
}
int sol;
r = s, l = maxim;
while (l <= r)
{
mid = (r+l)/2;
if (verif(mid) == 1)
sol = mid, r = mid-1;
else
l = mid+1;
}
g << sol << "\n";
return 0;
}