Pagini recente » Cod sursa (job #1386175) | Cod sursa (job #1692857) | Cod sursa (job #1296456) | Cod sursa (job #2796052) | Cod sursa (job #1580095)
#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];
maxim = max(maxim, a[i]);
}
l = s-1, r = maxim+1;
while (r-l > 1)
{
mid = (r+l)/2;
if (verif(mid))
r = mid;
else
l = mid;
}
g << r << "\n";
return 0;
}