Pagini recente » Cod sursa (job #132057) | Cod sursa (job #2807768) | Cod sursa (job #1930261) | Cod sursa (job #1025546) | Cod sursa (job #1517232)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
#define NMAX 16010
int n, k, v[NMAX], maxim, st, dr, mij, rez;
int verif(int gMax)
{
int i, s, t;
s = 0;
t = 0;
for (i = 1;i <= n + 1;i++)
{
if (s + v[i] <= gMax)
{
s += v[i];
continue;
}
t++;
if (t > k) return 0;
s = v[i];
}
return 1;
}
int main()
{
int i, j;
f>>n>>k;
for (i = 1;i <= n;++i)
{
f>>v[i];
if (v[i] > maxim)
maxim = v[i];
}
v[n + 1] = 999999;
if (k >= n)
{
g<<maxim;
return 0;
}
st = maxim;
dr = 16000;
while (st <= dr)
{
mij = (st + dr) / 2;
if (verif(mij))
{
dr = mij - 1;
rez = mij;
}
else st = mij + 1;
}
g<<rez;
}