Pagini recente » Cod sursa (job #983845) | Cod sursa (job #1976479) | Cod sursa (job #1370169) | Cod sursa (job #1006508) | Cod sursa (job #2308784)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long long N, K, sum, MAX, a[16001];
bool check(long long c) {
long long nt = 0, x = c;
for (int i = 1; i <= N; i++)
if (a[i] <= x) x -= a[i];
else nt++, x = c, i--;
return (nt + 1) <= K;
}
long long lower_bound() {
long long st = MAX, dr = sum, poz = 1;
while(st<=dr) {
long long mij = st +(dr - st) / 2;
if (check(mij)) poz = mij, dr = mij - 1;
else st = mij + 1;
}
return poz;
}
int main()
{
f >> N >> K;
for (int i = 1; i <= N; i++)
f >> a[i], sum += a[i], MAX = max(MAX, a[i]);
g << lower_bound() << "\n";
return 0;
}