#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
int n;
int a[maxn], l[maxn], r[maxn];
long long ans[maxn];
struct node {
  int pos, data;
  node() {}
  node(int _1, int _2) : pos(_1), data(_2) {}
} q[maxn];
struct seg_tree {
  long long data[maxn << 2], add[maxn << 2];
  void pushdown(int rt) {
    add[rt << 1] += add[rt];
    add[rt << 1 | 1] += add[rt];
    add[rt] = 0;
  }
  void pushup(int l, int r, int rt) {
    int m = (l + r) >> 1;
    data[rt] = data[rt << 1] + data[rt << 1 | 1] + add[rt << 1] * (m - l + 1) +
               add[rt << 1 | 1] * (r - m);
  }
  long long query(int p, int l, int r, int rt) {
    if (l == r) return data[rt] + add[rt];
    int m = (l + r) >> 1;
    pushdown(rt);
    long long Ans;
    if (p <= m)
      Ans = query(p, l, m, rt << 1);
    else
      Ans = query(p, m + 1, r, rt << 1 | 1);
    pushup(l, r, rt);
    return Ans;
  }
  void updata(int L, int R, int l, int r, int rt, long long c) {
    if (L <= l && r <= R) {
      add[rt] += c;
      return;
    }
    int m = (l + r) >> 1;
    pushdown(rt);
    if (L <= m) updata(L, R, l, m, rt << 1, c);
    if (R > m) updata(L, R, m + 1, r, rt << 1 | 1, c);
    pushup(l, r, rt);
  }
} tree;
int main() {
  int i;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  int R = 1;
  l[1] = 0;
  q[0] = node(0, 0);
  q[1] = node(1, a[1]);
  for (i = 2; i <= n; i++) {
    while (R > 0 && q[R].data >= a[i]) R--;
    l[i] = i - q[R].pos - 1;
    q[++R] = node(i, a[i]);
  }
  R = 1;
  r[1] = 0;
  q[0] = node(n + 1, n);
  q[1] = node(n, a[n]);
  for (i = n - 1; i >= 1; i--) {
    while (q[R].data > a[i] && R > 0) R--;
    r[i] = q[R].pos - i - 1;
    q[++R] = node(i, a[i]);
  }
  for (i = 1; i <= n; i++) {
    int L = l[i], R = r[i];
    tree.updata(1, L + 1, 1, n, 1, a[i]);
    tree.updata(R + 2, L + R + 2, 1, n, 1, -a[i]);
  }
  ans[0] = 0;
  for (i = 1; i <= n; i++) {
    ans[i] = ans[i - 1] + tree.query(i, 1, n, 1);
  }
  int m;
  scanf("%d", &m);
  for (i = 1; i <= m; i++) {
    int x;
    scanf("%d", &x);
    printf("%.10lf\n", (double)ans[x] / (double)(n - x + 1));
  }
  return 0;
}
