#include <bits/stdc++.h>
using namespace std;
long long a[100001], s[100001], n, d, b, ans;
int main() {
  long long i, j, l, r, mid, s1, s2, t1, t2;
  scanf("%I64d %I64d %I64d", &n, &d, &b);
  for (i = 1; i <= n; i++) scanf("%I64d", &a[i]), s[i] = s[i - 1] + a[i];
  l = 1;
  r = n;
  ans = n + 1;
  while (l <= r) {
    mid = (l + r) / 2;
    s1 = 0;
    s2 = 0;
    t1 = 0;
    t2 = 0;
    for (i = 1; i <= mid; i++) {
      if (a[i] > b) {
        t1++;
        s1 = s1 + a[i] - b;
      } else {
        j = min(i + min(i, n - i + 1) * d, mid);
        if (a[i] + s1 >= b) {
          t1++;
          s1 = s1 - (b - a[i]);
        } else {
          if (a[i] + s1 + s[j] - s[i] >= b) {
            t1++;
            s1 = s1 - (b - a[i]);
          } else {
            s1 = s1 + a[i];
          }
        }
      }
    }
    for (i = n; i >= mid; i--) {
      j = max(mid, i - min(i, (n - i + 1)) * d);
      if (a[i] > b) {
        t2++;
        s2 = s2 + a[i] - b;
      } else {
        if (a[i] + s2 >= b) {
          t2++;
          s2 = s2 - (b - a[i]);
        } else {
          if (a[i] + s2 + s[i - 1] - s[j - 1] >= b) {
            t2++;
            s2 = s2 - (b - a[i]);
          } else {
            s2 = s2 + a[i];
          }
        }
      }
    }
    ans = min(ans, max(mid - t1, n - mid - t2 + 1));
    if (mid - t1 < n - mid - t2 + 1)
      r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%I64d", ans);
}
