Pagini recente » Cod sursa (job #2024217) | Cod sursa (job #285894) | Cod sursa (job #968617) | Cod sursa (job #663989) | Cod sursa (job #2890046)
#include <bits/stdc++.h>
#define N 16005
using namespace std;
int v[N], n;
int get_transporturi(int x) {
int rez = 0, S = x + 1;
for (int i = 0; i < n; ++i) {
if (S + v[i] <= x) {
S += v[i];
}
else {
++rez;
S = v[i];
}
}
return rez;
}
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
int k;
fin >> n >> k;
int maxx = 0, minx = 0;
for (int i = 0; i < n; ++i) {
fin >> v[i];
maxx += v[i];
minx = max(minx, v[i]);
}
int putere, i;
for (putere = 1; putere <= maxx; putere <<= 1);
for (i = minx; putere; putere >>= 1) {
if ((i | putere) <= maxx && get_transporturi(i | putere) > k) {
i |= putere;
}
}
// cout << get_transporturi(7) << endl;
fout << i + 1;
return 0;
}