#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 0, -1, 1};
int dy[] = {-1, 1, 0, 0};
long long n, m, r;
set<pair<long long, pair<int, int> > > s;
map<pair<int, int>, bool> used;
long long getCount(int x, int y) {
  long long lg = x - r + 1;
  if (lg <= 0) lg = 1;
  long long rg = x + r - 1;
  if (rg >= m) rg = m;
  long long ans = rg - lg - r + 2;
  lg = y - r + 1;
  if (lg <= 0) lg = 1;
  rg = y + r - 1;
  if (rg >= n) rg = n;
  ans *= (rg - lg - r + 2);
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  int k;
  cin >> n >> m >> r >> k;
  long long tot = 0;
  pair<long long, pair<int, int> > cur =
      make_pair(-getCount(m / 2 + m % 2, n / 2 + n % 2),
                make_pair(m / 2 + m % 2, n / 2 + n % 2));
  s.insert(cur);
  for (int i = 0; i < k; i++) {
    pair<long long, pair<int, int> > cur = *s.cbegin();
    s.erase(s.cbegin());
    tot += -cur.first;
    used[make_pair(cur.second.first, cur.second.second)] = true;
    for (int d = 0; d < 4; d++) {
      int xx = cur.second.first + dx[d];
      int yy = cur.second.second + dy[d];
      if ((xx < 1) || (xx > m) || (yy < 1) || (yy > n)) continue;
      if (used[make_pair(xx, yy)]) continue;
      s.insert(make_pair(-getCount(xx, yy), make_pair(xx, yy)));
      used[make_pair(xx, yy)] = true;
    }
  }
  double ans = 1.0 * tot / ((n - r + 1) * (m - r + 1));
  cout << setprecision(10) << fixed << ans << endl;
  return 0;
}
