#include <bits/stdc++.h>
const int N = 101000;
int n, d, b;
long long A[N], B[N];
long long query(long long L, long long R) {
  if (L < 1) L = 1;
  if (R > n) R = n;
  return B[R] - B[L - 1];
}
bool check(int lim) {
  for (int i = 1; i <= n; i++) B[i] = B[i - 1] + A[i];
  int L = lim + 1, R = n - lim;
  long long t = lim, cnt = 0;
  for (int i = 1; i < L; i++) cnt += A[i];
  for (int i = L; i <= n / 2; i++) {
    cnt += A[i] - b, t++;
    long long x = query(i + 1, i + t * d);
    if (x + cnt < 0) return 0;
  }
  int tmp = n - (n / 2);
  cnt = 0, t = lim;
  for (int i = R + 1; i <= n; i++) cnt += A[i];
  for (int i = R; i >= tmp; i--) {
    cnt += A[i] - b, t++;
    long long x = query(i - t * d, i - 1);
    if (x + cnt < 0) return 0;
  }
  return 1;
}
int main() {
  scanf("%d%d%d", &n, &d, &b);
  for (int i = 1; i <= n; i++) scanf("%lld", A + i);
  int u = n / 2, d = 0, mid;
  while (u > d) {
    mid = (u + d) >> 1;
    if (check(mid))
      u = mid;
    else
      d = mid + 1;
  }
  printf("%d\n", d);
  return 0;
}
