#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const long long mod = 1000000007ll;
long long n, m;
priority_queue<pair<long long, pair<int, int> > > q;
long long r, k;
long long f(long long x, long long y) {
  return (min(x + r - 1, n) - max(x, r) + 1) *
         (min(y + r - 1, m) - max(y, r) + 1);
}
set<pair<long long, long long> > st;
int dx[4] = {0, 0, 1, -1}, dy[4] = {1, -1, 0, 0};
int main() {
  int i, j;
  cin >> n >> m >> r >> k;
  q.push({f((n + 1) / 2, (m + 1) / 2), {(n + 1) / 2, (m + 1) / 2}});
  st.insert({(n + 1) / 2, (m + 1) / 2});
  long long sum = 0;
  while (k--) {
    pair<long long, pair<int, int> > p = q.top();
    q.pop();
    long long s = p.first, x = p.second.first, y = p.second.second;
    sum += s;
    for (i = 0; i < 4; i++) {
      long long tx = x + dx[i], ty = y + dy[i];
      if (st.find({tx, ty}) != st.end()) continue;
      st.insert({tx, ty});
      q.push({f(tx, ty), {tx, ty}});
    }
  }
  printf("%.9f", double(sum) / double((n - r + 1) * (m - r + 1)));
  return 0;
}
