#include <bits/stdc++.h>
using namespace std;
int n, m, r, k, A, B, C, D, S[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
double Q;
map<pair<int, int>, bool> s;
priority_queue<pair<long long, pair<int, int> > > O;
long long W(int x, int y) {
  return 1LL * (min(x, n - r + 1) - max(1, x - r + 1) + 1) *
         (min(y, m - r + 1) - max(1, y - r + 1) + 1);
}
int main() {
  scanf("%d%d%d%d", &n, &m, &r, &k);
  A = (n + 1) / 2, B = (m + 1) / 2;
  O.push(make_pair(W(A, B), make_pair(A, B)));
  s[make_pair(A, B)] = 1;
  while (k--) {
    A = O.top().second.first;
    B = O.top().second.second;
    Q += O.top().first;
    O.pop();
    for (int i = 0; i < 4; i++) {
      C = A + S[i][0], D = B + S[i][1];
      if (!s[make_pair(C, D)])
        O.push(make_pair(W(C, D), make_pair(C, D))), s[make_pair(C, D)] = 1;
    }
  }
  printf("%.15f\n", Q / (n - r + 1) / (m - r + 1));
}
