Pagini recente » Cod sursa (job #1940487) | Cod sursa (job #2286703) | Cod sursa (job #1532418) | Cod sursa (job #1628538) | Cod sursa (job #2964321)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int NrMax = 256000000;
int n, k, x, sumc, A[16005], sol, st, dr, m, Max;
bool solutie(int vol)
{
int sumc, drum;
sumc = drum = 0;
for(int i = 1; i <= n; i ++)
{
if(sumc + A[i] <= vol)
{
sumc += A[i];
}
else
{
drum ++;
sumc = A[i];
}
}
if(sumc > 0)drum ++;
if(drum <= k)return true;
return false;
}
int main()
{
f >> n >> k;
for(int i = 1; i <= n; i ++)
{
f >> A[i];
Max = max(A[i], Max);
}
st = Max; dr = NrMax;
while(st <= dr)
{
m = (st + dr) / 2;
if(solutie(m))
{
dr = m - 1;
sol = m;
}
else st = m + 1;
}
g << sol;
return 0;
}