Pagini recente » Cod sursa (job #784449) | Ceva interesant de văzut?:) | Cod sursa (job #2053463) | Cod sursa (job #771243) | Cod sursa (job #2219096)
#include <fstream>
using namespace std;
int v[16003];
bool ok (int mij, int n, int k) {
int i, sum, cnt;
sum = 0;
cnt = 0;
for (i = 0; i < n; i++) {
if (v[i] > mij)
return 0;
sum += v[i];
if (sum > mij) {
sum = v[i];
cnt++;
}
}
if (cnt + 1 > k)
return 0;
else
return 1;
}
int main() {
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int n, k, st, dr, mij, sol, i;
cin >> n >> k;
for (i = 0; i < n; i++)
cin >> v[i];
st = 1;
dr = 16000 * n;
while (st <= dr) {
mij = (st + dr) / 2;
if (ok(mij, n, k) == 1) {
dr = mij - 1;
sol = mij;
}
else
st = mij + 1;
}
cout << sol;
return 0;
}