#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
long long dis(int i, int j, int n, int m, int r) {
  int sx = max(1, i - r + 1), sy = max(1, j - r + 1);
  int tx = min(n - r + 1, i), ty = min(m - r + 1, j);
  return (tx - sx + 1) * 1LL * (ty - sy + 1);
}
priority_queue<pair<long long, pair<int, int>>> pq;
set<pair<int, int>> vis;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m, r, k;
  cin >> n >> m >> r >> k;
  int sx = (n + 1) / 2, sy = (m + 1) / 2;
  long long d = dis(sx, sy, n, m, r);
  vis.insert(make_pair(sx, sy));
  pq.push(make_pair(d, make_pair(sx, sy)));
  double ans = 0;
  while (k--) {
    long long cd = pq.top().first;
    int cx = pq.top().second.first, cy = pq.top().second.second;
    pq.pop();
    ans += cd / double(n - r + 1);
    for (int i = 0; i < 4; i++) {
      int x = cx + dx[i], y = cy + dy[i];
      if (x < 1 or x > n or y < 1 or y > m) continue;
      if (vis.find(make_pair(x, y)) != vis.end()) continue;
      long long d = dis(x, y, n, m, r);
      vis.insert(make_pair(x, y));
      pq.push(make_pair(d, make_pair(x, y)));
    }
  }
  ans /= (m - r + 1);
  cout << setprecision(15) << fixed << ans << "\n";
  return 0;
}
