<script>
function
is_possible_min(arr, mid) {
let N = arr.length;
for
(let i = N - 1; i >= 2; i--) {
if
(arr[i] < mid)
return
0;
else
{
let extra = arr[i] - mid;
extra = Math.floor(extra / 3);
arr[i - 1] += extra;
arr[i - 2] += 2 * extra;
}
}
if
(arr[0] >= mid && arr[1] >= mid)
return
1;
return
0;
}
function
find_maximum_min(arr) {
let f = 1, l = max_element(arr);
let res = Number.MIN_SAFE_INTEGER
while
(f <= l) {
let mid = Math.ceil((f + l) / 2);
if
(is_possible_min(arr, mid)) {
res = Math.max(res, mid);
f = mid + 1;
}
else
{
l = mid - 1;
}
}
document.write(res);
}
function
max_element(ar) {
return
[...ar].sort((a, b) => - a + b)[0]
}
let arr = [1, 2, 3, 4, 5, 6];
find_maximum_min(arr);
</script>