Pagini recente » Cod sursa (job #2290924) | Cod sursa (job #2618268) | Cod sursa (job #1613333) | Cod sursa (job #1627089) | Cod sursa (job #2579662)
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int oo = (int) (1e9);
int n, k, v[16010],st, dp, m, mx, s;
bool bun(int r)
{
int i = 1, j = 0, t = 0;
while(i <= n)
{
if(t + v[i] <= r)
t += v[i];
else
{
t = v[i];
j++;
}
i++;
}
return j < k;
}
int main()
{
in>>n>>k;
mx = -oo;
s = 0;
for(int i = 1;i <= n;i++)
{
in>>v[i];
s += v[i];
mx = max(mx, v[i]);
}
if(k == 1)
out<<s;
else
{
st = mx;
dp = s;
while(st <= dp)
{
m =(st + dp) / 2;
if(bun(m))
dp = m - 1;
else
st = m + 1;
}
out<<st;
}
return 0;
}