Pagini recente » Cod sursa (job #1266850) | Cod sursa (job #83972) | Cod sursa (job #255950) | Cod sursa (job #2452065) | Cod sursa (job #2338465)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
vector <int> v;
bool isSolution (int sol, int k, int n)
{
int lastVal = 0;
for (int i = 0; i < n; i ++) {
if (k == 0) return false;
if (v[i] - lastVal > sol) {
k --, lastVal = v[i - 1], i --;
}
}
return true;
}
int main()
{
int n, k;
fin >> n >> k;
int maxim = 0;
int x;
fin >> x;
v.push_back(x);
if (x > maxim) maxim = x;
for (int i = 1; i < n; i ++) {
int x;
fin >> x;
v.push_back(x);
v[i] += v[i - 1];
if (x > maxim) maxim = x;
}
int dr = v[n - 1], st = maxim;
int sol = 0;
while (dr >= st) {
int m = (dr + st) / 2;
if (isSolution(m, k, n) && m >= maxim && m <= v[n - 1]) sol = m, dr = m - 1;
else st = m + 1;
}
fout << sol;
return 0;
}