Pagini recente » Cod sursa (job #812037) | Cod sursa (job #550097) | Cod sursa (job #2839996) | Cod sursa (job #2924353) | Cod sursa (job #2701444)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005],k,n;
bool check(int x)
{
int s=0,cnt=0;
for (int i = 1; i <= n; i++)
{
if (s + a[i] <= x) s += a[i];
else
{
cnt++;
s = a[i];
}
}
if (s) cnt++;
if (cnt <= k) return 1;
return 0;
}
int main()
{
int i,st,dr=0,mij, sol,ma=0;
fin >> n >> k;
for (i = 1; i <= n; i++)
{
fin >> a[i];
dr += a[i];
ma = max(ma, a[i]);
}
st = ma;
while (st<=dr)
{
mij = (st + dr) / 2;
if (check(mij))
{
sol = mij;
dr = mij - 1;
}
else st = mij + 1;
}
fout << sol;
return 0;
}