#include <bits/stdc++.h>
using namespace std;
int n, S, D, B, p, q, a[100005], b[100005], M, ll[100005], rr[100005], L, R,
    mid;
int main() {
  scanf("%d%d%d", &n, &D, &B);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  if (n & 1)
    M = (n + 1 >> 1) + 1;
  else
    M = (n >> 1) + 1;
  for (int i = 1; i < M; ++i) ll[i] = 1;
  for (int i = M; i <= n; ++i) ll[i] = max(1ll, i - 1ll * (n - i + 1) * D);
  for (int i = M; i <= n; ++i) rr[i] = n;
  for (int i = 1; i < M; ++i) rr[i] = min(1ll * n, i + 1ll * i * D);
  L = 0;
  R = M - 1;
  while (L < R) {
    for (int i = 1; i <= n; ++i) b[i] = a[i];
    mid = L + R >> 1;
    for (p = 1, q = mid + 1; q <= n; ++q) {
      S = B;
      while (p < ll[q]) ++p;
      while (p <= rr[q] && S)
        if (S <= b[p])
          b[p] -= S, S = 0;
        else
          S -= b[p], b[p] = 0, ++p;
      if (S) break;
    }
    if (S) --q;
    if (q >= M - 1 && n - q <= mid) {
      R = mid;
      continue;
    }
    for (p = n, q = n - mid; q > 0; --q) {
      S = B;
      while (rr[q] < p) --p;
      while (ll[q] <= p && S)
        if (S <= b[p])
          b[p] -= S, S = 0;
        else
          S -= b[p], b[p] = 0, --p;
      if (S) break;
    }
    if (S) ++q;
    if (q < M && q - 1 <= mid) {
      R = mid;
      continue;
    }
    L = mid + 1;
  }
  printf("%d\n", L);
  return 0;
}
