#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chmin(T &x, const T &y) {
  if (x > y) x = y;
}
template <typename T>
void chmax(T &x, const T &y) {
  if (x < y) x = y;
}
char readc() {
  char c;
  while ((c = getchar()) < '-')
    ;
  return c;
}
int read() {
  char c;
  while ((c = getchar()) < '-')
    ;
  if (c == '-') {
    int x = (c = getchar()) - '0';
    while ((c = getchar()) >= '0') x = x * 10 + c - '0';
    return -x;
  }
  int x = c - '0';
  while ((c = getchar()) >= '0') x = x * 10 + c - '0';
  return x;
}
const int N = 1e5 + 5;
int n, d, b, l1, l2;
int a[N];
long long s[N];
bool ok(int now) {
  for (int i = now + 1; i <= l1; ++i)
    if (s[min((long long)n, i + (long long)i * d)] - s[0] < (i - now) * b)
      return 0;
  for (int i = n - now; i >= n - l2 + 1; --i)
    if (s[n] - s[max((long long)0, i - (long long)(n - i + 1) * d - 1)] <
        (n - now - i + 1) * b)
      return 0;
  return 1;
}
int main() {
  n = read();
  d = read();
  b = read();
  for (int i = 1; i <= n; ++i) a[i] = read();
  for (int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i];
  l2 = n / 2;
  l1 = n - l2;
  int l = -1, r = l1;
  while (l + 1 != r)
    if (ok((l + r >> 1)))
      r = (l + r >> 1);
    else
      l = (l + r >> 1);
  cout << r;
}
