Pagini recente » Cod sursa (job #1031156) | Cod sursa (job #2722333) | Cod sursa (job #3280045) | Cod sursa (job #3178097) | Cod sursa (job #2280545)
#include <fstream> // reimplementare pentru lab ASD
#include <algorithm>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int i, A[16001], N, mask, Max, sum, K;
int check (long long x) {
int i = 0, sum = 0, sol = 1;
while (i <= N) {
if (A[i] > x) return K + 1;
if (A[i] + sum > x) {
sum = A[i];
++sol;
}
else {
sum = sum + A[i];
}
++i;
}
return sol;
}
int cautbin (int x) {
int left = 1, right = Max, mid, val;
while (right >= left) {
mid = left + (right - left) / 2;
val = check(mid);
if (val <= x) right = mid - 1;
else left = mid + 1;
}
return left;
}
int main() {
f >> N >> K;
sum = 0;
for (i = 1; i <= N; i++) {
f >> A[i];
sum += A[i];
}
Max = sum;
mask = 1;
while (mask <= Max)
mask <<= 1;
mask >>= 1;
g << cautbin(K);
return 0;
}