Pagini recente » Cod sursa (job #602157) | Cod sursa (job #1213377) | Cod sursa (job #2968637) | Cod sursa (job #2846533) | Cod sursa (job #2837929)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int N = 5e5 + 7;
long long n, i, k, l, r, mid, ans, s, nr, sum, mx = -1;
long long v[N];
int main()
{
fin >> n >> k;
for(i = 1; i <= n; i++)
fin >> v[i], mx = max(mx, v[i]), sum += v[i];
l = mx; r = sum;
while(l <= r){
mid = l + (r - l) / 2;
i = 1;
nr = s = 0;
while(i <= n){
if(s + v[i] <= mid) s += v[i];
else s = v[i], nr++;
i++;
}
if(s > 0) nr++;
// fout << nr << " " << mid << "\n";
if(nr <= k) ans = mid, r = mid - 1;
else l = mid + 1;
}
fout << ans;
return 0;
}