#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100005;
int N, D, B, A[MAX_N], temp[MAX_N];
bool check(int mid) {
  for (int i = mid + 1; i <= (N + 1) / 2; ++i) {
    if (temp[i] >= (i - mid) * B) continue;
    int delta = (i - mid) * B - temp[i];
    long long r = min((long long)N, (long long)i + (long long)i * D);
    if (temp[r] - temp[i] < delta) return false;
  }
  for (int i = N - mid, l = 1; i > (N + 1) / 2; --i, l++) {
    if (temp[N] - temp[i - 1] >= l * B) continue;
    int delta = l * B - temp[N] + temp[i - 1];
    long long le = max((long long)1, i - (long long)(N - i + 1) * D);
    if (temp[i - 1] - temp[le - 1] < delta) return false;
  }
  return true;
}
int main() {
  scanf("%d%d%d", &N, &D, &B);
  for (int i = 1; i <= N; ++i) scanf("%d", &A[i]), temp[i] = temp[i - 1] + A[i];
  int l = 0, r = N / 2, ans = r;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (check(mid))
      ans = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%d\n", ans);
  return 0;
}
