Pagini recente » Cod sursa (job #2393146) | Cod sursa (job #1215363) | Cod sursa (job #2519939) | Cod sursa (job #1198063) | Cod sursa (job #1527405)
#include <iostream>
#include <fstream>
using namespace std;
int a[16001], n, k;
int verif (int capac)
{
int sum = 0, drum = 0;
for (int i = n; i >= 1; i--) {
if (sum + a[i] > capac) {
sum = a[i];
drum++;
}
else sum += a[i];
}
if (sum != 0)
drum++;
return drum;
}
int main()
{
int l, r, rez, m, max_a = 0;
ifstream f("transport.in");
ofstream g("transport.out");
f >> n >> k;
for (int i = n; i >= 1; i--) {
f >> a[i];
if (a[i] > max_a) max_a = a[i];
}
r = n * 16000;
l = max_a;
rez = max_a;
while (l <= r) {
m = l + (r - l) / 2;
if (verif (m) == k)
if (verif (m - 1) > k) {
rez = m;
break;
}
else r = m - 1;
if (verif (m) < k)
r = m - 1;
if (verif (m) > k)
l = m + 1;
}
g << rez;
f.close ();
g.close ();
return 0;
}