#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
long long s1[N], s2[N], s3[N], gam[N], ans[N];
int lo[N], rr[N], a[N];
int32_t main() {
  int n;
  scanf("%d", &n);
  vector<pair<long long, long long> > v;
  vector<pair<int, int> > s;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), v.push_back({a[i], i});
  sort(v.begin(), v.end());
  s.push_back({-1, 0});
  for (int i = 1; i <= n; i++) {
    pair<int, int> x = {a[i], i};
    while (s.back() > x) s.pop_back();
    lo[i] = s.back().second;
    s.push_back(x);
  }
  s.clear();
  s.push_back({-1, n + 1});
  for (int i = n; i >= 1; --i) {
    pair<int, int> x = {a[i], i};
    while (s.back() > x) s.pop_back();
    rr[i] = s.back().second;
    s.push_back(x);
  }
  s.clear();
  for (auto i : v) {
    int x = i.second, l = lo[i.second], r = rr[i.second];
    int d1 = abs(x - l), d2 = abs(x - r);
    s1[min(d1, d2)] += i.first;
    s2[max(d1, d2)] += i.first * min(d1, d2);
    s2[min(d1, d2)] -= i.first * min(d1, d2);
    gam[d1 + d2] += i.first;
    gam[max(d1, d2) + 1] -= i.first;
    s3[max(d1, d2)] -= i.first * (min(d1, d2) - 1);
  }
  for (long long i = n + 1; i >= 1; --i) {
    ans[i] += s1[i] * i, s1[i - 1] += s1[i];
    ans[i] += s2[i], s2[i - 1] += s2[i];
    ans[i] += s3[i], s3[i - 1] += s3[i] + gam[i], gam[i - 1] += gam[i];
  }
  int Q;
  cin >> Q;
  while (Q--) {
    int x;
    scanf("%d", &x);
    double d = ans[x], dd = n - x + 1;
    printf("%.16lf\n", d / dd);
  }
}
