#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T& x) {
  int f = 1;
  x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= f;
}
const int N = 200000 + 5;
int n, d, B;
int a[N], b[N];
int check(int x) {
  for (int i = 1; i <= n; i++) b[i] = a[i];
  for (int i = x + 1, p = 1; i <= n - x; ++i) {
    int t = B;
    while (t) {
      for (; !b[p] && p <= n;) p++;
      if (p > n) return 0;
      if ((abs(p - i) + d - 1) / d > min(i, n - i + 1)) {
        p++;
        continue;
      }
      int vv = min(b[p], t);
      b[p] -= vv;
      t -= vv;
    }
  }
  return 1;
}
int main() {
  read(n), read(d), read(B);
  for (int i = 1; i <= n; i++) read(a[i]);
  int l = 0, r = n / 2, ans = 0;
  check(1);
  while (l <= r) {
    int m = (l + r) >> 1;
    if (check(m)) {
      ans = m;
      r = m - 1;
    } else
      l = m + 1;
  }
  printf("%d\n", ans);
  return 0;
}
