#include <bits/stdc++.h>
using namespace std;
priority_queue<long long, vector<long long>, greater<long long>> q;
long long n, m, k, r;
set<pair<int, int>> vis;
long long calc(long long i, long long j) {
  return min(min(r, n - r + 1), min(i + 1, n - i)) *
         min(min(r, m - r + 1), min(j + 1, m - j));
}
void bfs(int i, int j, int pi, int pj) {
  if (q.size() >= k && q.top() >= calc(i, j)) return;
  if (vis.find({i, j}) != vis.end()) return;
  if (q.size() >= k) q.pop();
  vis.insert({i, j});
  q.push(calc(i, j));
  if (i + 1 < n) {
    if (make_pair(i, j) != make_pair(pi, pj)) bfs(i + 1, j, i, j);
  }
  if (i - 1 >= 0) {
    if (make_pair(i - 1, j) != make_pair(pi, pj)) bfs(i - 1, j, i, j);
  }
  if (j + 1 < m) {
    if (make_pair(i, j + 1) != make_pair(pi, pj)) bfs(i, j + 1, i, j);
  }
  if (j - 1 >= 0) {
    if (make_pair(i, j - 1) != make_pair(pi, pj)) bfs(i, j - 1, i, j);
  }
}
int main() {
  cin >> n >> m >> r >> k;
  bfs(n / 2, m / 2, -1, -1);
  double res = 0;
  while (q.size()) {
    res += (double)q.top() / (n - r + 1) / (m - r + 1);
    q.pop();
  }
  printf("%.9f", res);
}
