Pagini recente » Cod sursa (job #274648) | Cod sursa (job #1514369) | Cod sursa (job #1180296) | Cod sursa (job #2264039) | Cod sursa (job #2161845)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,i,v[16010],maxim,sum;
int main()
{
fin >> n >> k;
for (i=1; i<=n; i++)
{
fin >> v[i];
maxim = max(maxim, v[i]);
sum += v[i];
}
int st = maxim;
int dr = sum;
while (st <= dr)
{
int mid = (st+dr)/2;
int x = mid-v[1];
int transport = 1;
for (i=2; i<=n; i++)
if (x-v[i] >= 0)
x -= v[i];
else
{
transport++;
x = mid-v[i];
}
if (transport <= k)
dr = mid-1;
else
st = mid+1;
}
fout << st;
return 0;
}