Pagini recente » Cod sursa (job #2897478) | Cod sursa (job #2802342) | Cod sursa (job #2936229) | Cod sursa (job #2896839) | Cod sursa (job #2891581)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 16005
int n, k, v[NMAX], max_value = -1, sum;
int check_truck(int capacity)
{
int s = 0;
int i = 1;
int drums = 0;
while (i <= n) {
while (i <= n && s + v[i] <= capacity) {
s += v[i];
++i;
}
s = 0;
++drums;
}
cout << capacity << " capac " << drums << '\n';
return drums;
}
int binary_search(int val)
{
int i, step;
for (step = 1; step <= sum; step <<= 1);
for (i = max_value; step; step >>= 1)
if (i + step <= sum && check_truck(i + step) > val)
i += step;
return i + 1;
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> n >> k;
for (int i = 1; i <= n; i++) {
fin >> v[i];
sum += v[i];
if (max_value < v[i])
max_value = v[i];
}
cout << binary_search(k) << '\n';
fin.close();
fout.close();
return 0;
}