package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
n := readInt(in)
a := make([]int32, n)
for i := 0; i < n; i++ {
a[i] = int32(readInt(in))
}
left := make([]int32, n)
stack := make([]int32, 0, n)
for i := 0; i < n; i++ {
for len(stack) > 0 && a[stack[len(stack)-1]] > a[i] {
stack = stack[:len(stack)-1]
}
if len(stack) == 0 {
left[i] = int32(i)
} else {
left[i] = int32(i) - stack[len(stack)-1] - 1
}
stack = append(stack, int32(i))
}
right := make([]int32, n)
stack = stack[:0]
for i := n - 1; i >= 0; i-- {
for len(stack) > 0 && a[stack[len(stack)-1]] >= a[i] {
stack = stack[:len(stack)-1]
}
if len(stack) == 0 {
right[i] = int32(n - 1 - i)
} else {
right[i] = stack[len(stack)-1] - int32(i) - 1
}
stack = append(stack, int32(i))
}
diff2 := make([]int64, n+3)
for i := 0; i < n; i++ {
A := left[i] + 1
B := right[i] + 1
if A > B {
A, B = B, A
}
v := int64(a[i])
diff2[1] += v
diff2[A+1] -= v
diff2[B+1] -= v
diff2[A+B+1] += v
}
S := make([]int64, n+2)
var currentDiff int64 = 0
var currentSum int64 = 0
for k := 1; k <= n; k++ {
currentDiff += diff2[k]
currentSum += currentDiff
S[k] = currentSum
}
m := readInt(in)
out := bufio.NewWriter(os.Stdout)
for i := 0; i < m; i++ {
k := readInt(in)
ans := float64(S[k]) / float64(n-k+1)
if i > 0 {
out.WriteByte(' ')
}
fmt.Fprintf(out, "%.15f", ans)
}
out.WriteByte('\n')
out.Flush()
}
func readInt(in *bufio.Reader) int {
var res int
var sign int = 1
var c byte
for {
c, _ = in.ReadByte()
if c == '-' || (c >= '0' && c <= '9') {
break
}
}
if c == '-' {
sign = -1
c, _ = in.ReadByte()
}
for {
res = res*10 + int(c-'0')
c, _ = in.ReadByte()
if c < '0' || c > '9' {
break
}
}
return res * sign
}