#include <bits/stdc++.h>
using namespace std;
long long n, d, b;
long long a[100010];
long long sum[100010];
int main() {
  scanf("%lld%lld%lld", &n, &d, &b);
  long long ans = 100010;
  for (long long i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  memset(sum, 0, sizeof(sum));
  for (long long i = 1; i <= n; i++) {
    sum[i] = sum[i - 1] + a[i];
  }
  long long l = 1;
  long long r = n;
  long long pos;
  while (l <= r) {
    pos = (l + r) / 2;
    long long sl = 0;
    long long sr = 0;
    long long sum1 = 0;
    for (long long i = 1; i <= pos; i++) {
      if (a[i] > b) {
        sl += a[i] - b;
      } else {
        long long tmp =
            min((long long)pos,
                (long long)((long long)i + (long long)i * (long long)d));
        if (sum[tmp] - sum[i - 1] + sl < b) {
          sum1++;
          sl += a[i];
        } else {
          sl -= b - a[i];
        }
      }
    }
    long long sum2 = 0;
    for (long long i = n; i > pos; i--) {
      if (a[i] > b) {
        sr += a[i] - b;
      } else {
        long long tmp = max(pos, i - d * (n - i + 1));
        if (sum[i] - sum[tmp - 1] + sr < b) {
          sum2++;
          sr += a[i];
        } else {
          sr -= b - a[i];
        }
      }
    }
    ans = min(ans, max(sum1, sum2));
    if (sum1 > sum2)
      l = pos + 1;
    else if (sum1 < sum2)
      r = pos - 1;
    else
      break;
  }
  printf("%lld\n", ans);
  return 0;
}
