Pagini recente » Cod sursa (job #714121) | Cod sursa (job #937938) | Cod sursa (job #499459) | Cod sursa (job #3134250) | Cod sursa (job #2923506)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int NMAX = 16005;
int arr[NMAX], n, k;
inline void solve()
{
int ans = INT_MAX, s = 0;
for(int i=1;i<=n;++i)
s+=arr[i];
int st = 1, dr = s;
while(st <= dr)
{
//cout << st << ' ' << dr << ' ';
int num = 0, rez = 1;
int mid = (st+dr)/2;
//cout << mid << ' ';
for(int i=1;i<=n;++i)
{
if(arr[i]+num <= mid)
num+=arr[i];
else
rez++, num = arr[i];
}
//cout << rez << ' ';
if(rez > k)
st = mid+1;
else
dr = mid-1, ans = min(ans,mid);
//cout << st << ' ' << dr << '\n';
}
g << ans;
}
int main()
{
f >> n >> k;
for(int i=1;i<=n;++i)
f >> arr[i];
solve();
}