#include <bits/stdc++.h>
using namespace std;
int x[100010], n, d, b;
long long t[100010];
bool check(int mid) {
  for (int i = 1; i <= n; i++) t[i] = x[i];
  int en = (n + 1) / 2;
  int now = 1;
  for (int i = mid + 1; i <= en; i++) {
    while (t[i] < b) {
      if (now == i) now++;
      if (now > n || now - i > (long long)d * i) return false;
      long long use = min(t[now], b - t[i]);
      t[i] += use;
      t[now] -= use;
      if (t[now] == 0) now++;
    }
    t[i] -= b;
  }
  now = n;
  for (int i = n - mid; i >= en + 1; i--) {
    while (t[i] < b) {
      if (now == i) now--;
      if (now < 1 || i - now > (long long)d * (n - i + 1)) return false;
      long long use = min(t[now], b - t[i]);
      t[i] += use;
      t[now] -= use;
      if (t[now] == 0) now--;
    }
    t[i] -= b;
  }
  return true;
}
int main() {
  scanf("%d%d%d", &n, &d, &b);
  for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
  int lef = 0, righ = n / 2, ans;
  while (lef <= righ) {
    int mid = (lef + righ) / 2;
    if (check(mid)) {
      ans = mid;
      righ = mid - 1;
    } else
      lef = mid + 1;
  }
  printf("%d\n", ans);
  return 0;
}
