#include <bits/stdc++.h>
using namespace std;
int aa[100005], n, d, b, qq[100005], cur = 1, a[100005], mid;
int f(int hmn, int far) {
  int r = 1, sum = 0, re = 0, fro;
  for (int i = 1; i <= hmn; i++) {
    for (; r <= far && r <= i + d * i; r++) sum += a[r];
    if (a[i] >= b) {
      int tmp = a[i] - b;
      a[i] -= tmp;
      a[i + 1] += tmp;
      sum -= a[i];
    } else {
      if (sum >= b) {
        a[r - 1] -= b - a[i];
        a[i] = b;
        sum -= a[i];
      } else {
        a[i + 1] += a[i];
        a[i] = 0;
        re++;
      }
    }
  }
  return re;
}
int z(int x, int &tmp1, int &tmp2) {
  while (qq[cur - 1] >= x && cur > 1) cur--;
  while (qq[cur] < x && cur < n) cur++;
  memset(a, 0, sizeof(a));
  for (int i = 1; i <= cur; i++) a[i] = aa[i];
  a[cur] = x - qq[cur - 1];
  tmp1 = f((n + 1) / 2, cur);
  memset(a, 0, sizeof(a));
  for (int i = n; i >= cur; i--) a[n - i + 1] = aa[i];
  a[n - cur + 1] = qq[cur] - x;
  tmp2 = f(n / 2, n - cur + 1);
  return tmp2 - tmp1;
}
int main() {
  cin >> n >> d >> b;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &aa[i]);
    qq[i] = qq[i - 1] + aa[i];
  }
  int l = 0, r = n * b, re, tmp1, tmp2;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (z(mid, tmp1, tmp2) >= 0)
      re = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  z(re, tmp1, tmp2);
  int ans = max(tmp1, tmp2);
  z(re - 1, tmp1, tmp2);
  ans = min(ans, max(tmp1, tmp2));
  cout << ans << endl;
  return 0;
}
