Pagini recente » Cod sursa (job #1447479) | Cod sursa (job #2983130) | Cod sursa (job #2622817) | Cod sursa (job #1005799) | Cod sursa (job #2889917)
#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 n, k;
fin >> n >> k;
int minx = N, maxx = 0;
for (int i = 0; i < n; ++i) {
fin >> v[i];
minx = min(minx, v[i]);
maxx = max(maxx, 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;
}
fout << i + 1;
return 0;
}