#include <bits/stdc++.h>
struct fishy {
  int idx;
  long long int val;
  bool operator<(const fishy &rhs) const { return val < rhs.val; }
};
void init_arr(long long int *arr, int sz, int r) {
  for (int i = 0; i < sz; ++i) {
    long long int x = i / 2 + 1;
    if (x > r) x = r;
    if (x > sz - r + 1) x = sz - r + 1;
    arr[i] = x;
  }
}
long long int a[100005];
long long int b[100005];
long long int c[100005];
std::priority_queue<fishy> pq;
int main(void) {
  int n, m, r, k;
  double res = 0.0;
  std::cin >> n >> m >> r >> k;
  init_arr(a, n, r);
  init_arr(b, m, r);
  for (int i = 0; i < n; ++i) {
    fishy f;
    f.idx = i;
    f.val = a[i] * b[m - 1];
    pq.push(f);
    c[i] = m - 1;
  }
  for (int i = 0; i < k; ++i) {
    fishy f = pq.top();
    pq.pop();
    res += f.val;
    int y = f.idx;
    c[y]--;
    if (c[y] >= 0) {
      fishy f2;
      f2.idx = y;
      f2.val = b[c[y]] * a[y];
      pq.push(f2);
    }
  }
  res /= n - r + 1;
  res /= m - r + 1;
  std::cout << std::fixed << std::setprecision(20) << res << std::endl;
  return 0;
}
