Pagini recente » Cod sursa (job #1898270) | Cod sursa (job #24198) | Cod sursa (job #3173149) | Cod sursa (job #114246) | Cod sursa (job #3141335)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int volum[16001], n;
int transport(int x, int k)
{
int i, copie;
copie = x;
for (i = 1 ; i <= n ; i++)
{
if (x >= volum[i]) x -= volum[i];
else { --k; x = copie; x -= volum[i]; if (k <= 0) return 0; }
}
return 1;
}
int cautarebinara(int st, int dr, int k)
{
int mij, poz;
while (st <= dr)
{
mij = (st + dr) / 2;
if (transport(mij,k) == 1)
{
poz = mij;
dr = mij - 1;
}
else st = mij + 1;
}
return poz;
}
int main()
{
int x, i, k, maxim, suma;
fin >> n >> k;
maxim = -1;
suma = 0;
for (i = 1 ; i <= n ; i++)
{
fin >> volum[i];
maxim = max(volum[i],maxim);
suma += volum[i];
}
fout << cautarebinara(maxim,suma,k);
return 0;
}