Pagini recente » Cod sursa (job #2904252) | Cod sursa (job #1737262) | Cod sursa (job #554136) | Cod sursa (job #2488137) | Cod sursa (job #1045239)
#include<fstream>
using namespace std;
int n, k, *v;
bool depaseste (short capacitate)
{
int sum = 0, drumuri = 1;
for (short i = 0; i < n; i++)
{
sum += v[i];
if (sum > capacitate)
{
sum = v[i];
drumuri++;
}
if (drumuri > k)
return true;
}
return false;
}
int main()
{
int lim_s, lim_d, potential;
ifstream f ("transport.in");
f >> n >> k;
v = new int[n];
f >> v[0];
lim_s = lim_d = v[0];
for (short i = 1; i < n; i++)
{
f >> v[i];
lim_d += v[i];
if (lim_s < v[i])
lim_s = v[i];
}
while (lim_s != lim_d)
{
potential = (lim_s + lim_d) / 2;
if (!depaseste(potential))
lim_d = potential;
else
lim_s = potential + 1;
}
ofstream g ("transport.out");
g << lim_d;
g.close();
return 0;
}