Pagini recente » Cod sursa (job #2793082) | Cod sursa (job #2793098) | Cod sursa (job #647329) | Cod sursa (job #1110470) | Cod sursa (job #1527392)
#include <iostream>
#include <fstream>
using namespace std;
int verif (int k, int a[], int n, 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 (i == 1) drum++;
}
if (drum <= k) return 1;
return 0;
}
int main()
{
int n, k, l, r, rez, a[16001], m, sum = 0, max_a = 0;
ifstream f("transport.in");
ofstream g("transport.out");
f >> n >> k;
for (int i = n; i >= 1; i--) {
f >> a[i];
sum += a[i];
if (a[i] > max_a) max_a = a[i];
}
r = sum;
l = max_a;
rez = l;
while (l != r) {
m = l + (r - l) / 2;
if (verif (k, a, n, m)) { rez = m; r = m - 1; }
else l = m;
}
g << rez;
f.close ();
g.close ();
return 0;
}