#include <bits/stdc++.h>
long long min(long long a, long long b) { return a < b ? a : b; }
int main() {
  long long n, m, r, k;
  scanf("%I64d %I64d %I64d %I64d", &n, &m, &r, &k);
  long long hor_max = min(m - r + 1, r), ver_max = min(n - r + 1, r),
            hor_max_cnt = m - 2 * (hor_max - 1),
            ver_max_cnt = n - 2 * (ver_max - 1);
  std::priority_queue<std::pair<long long, long long>> pq;
  for (long long i = 1, summ = hor_max; i <= ver_max; ++i, summ += hor_max) {
    pq.push(std::make_pair(summ, i));
  }
  long long summ, ver_value, hor_value, ver_cnt, hor_cnt, cnt, ans = 0;
  while (k > 0) {
    summ = pq.top().first;
    ver_value = pq.top().second;
    hor_value = summ / ver_value;
    pq.pop();
    pq.push(std::make_pair(summ - ver_value, ver_value));
    if (ver_value == ver_max) {
      ver_cnt = ver_max_cnt;
    } else {
      ver_cnt = 2;
    }
    if (hor_value == hor_max) {
      hor_cnt = hor_max_cnt;
    } else {
      hor_cnt = 2;
    }
    cnt = min(k, ver_cnt * hor_cnt);
    k -= cnt;
    ans += cnt * summ;
  }
  printf("%.10lf", double(ans) / (n - r + 1) / (m - r + 1));
  return 0;
}
