Pagini recente » Borderou de evaluare (job #2796152) | Borderou de evaluare (job #1366451) | Cod sursa (job #3364673) | Cod sursa (job #3364674) | Cod sursa (job #3364675)
#include <bits/stdc++.h>
using namespace std;
#define int long long
ifstream in("transport.in");
ofstream out("transport.out");
const int MX1 = 16 * 1e3;
int n;
int k, cap;
int v[MX1 + 1];
bool fnc(int c) {
//daca merge pentru capacitatea c, incercam cu una mai mica
int cnt, s;
cnt = s = 0;
for(int i = 1; i <= n; ++i) {
if(v[i] > c)
return false;
s += v[i];
if(s > c)
++cnt, s = 0;
}
return !(cnt > k);
}
signed main()
{
in >> n >> k;
for(int i = 1; i <= n; ++i)
in >> v[i];
int st, dr, mij;
st = 0, dr = MX1 * MX1;
int ans;
while(st < dr) {
mij = (st + dr) / 2;
if(fnc(mij))
ans = mij, dr = mij - 1;
else
st = mij + 1;
}
out << ans << '\n';
return 0;
}