#include <bits/stdc++.h>
using namespace std;
map<pair<long long, long long>, long long> ma;
long long h, w, r, k;
long long f(long long y, long long x) {
  return min(min(r, h - r + 1), min(y + 1, h - y)) *
         min(min(r, w - r + 1), min(x + 1, w - x));
}
int main() {
  long long dx[4] = {-1, 0, 0, 1};
  long long dy[4] = {0, -1, 1, 0};
  cin >> h >> w >> r >> k;
  priority_queue<pair<long long, pair<long long, long long> > > pq;
  pq.push(make_pair(f(h / 2, w / 2), make_pair(h / 2, w / 2)));
  ma[make_pair(h / 2, w / 2)] = 1;
  double ans = 0;
  while (k) {
    pair<long long, pair<long long, long long> > p = pq.top();
    pq.pop();
    ans += 1. * p.first;
    long long y1 = p.second.first;
    long long x1 = p.second.second;
    for (long long i = (0); i < (4); ++i) {
      long long y2 = y1 + dy[i];
      long long x2 = x1 + dx[i];
      if (y2 < 0) continue;
      if (y2 >= h) continue;
      if (x2 < 0) continue;
      if (x2 >= w) continue;
      if (ma[make_pair(y2, x2)] == 1) continue;
      pq.push(make_pair(f(y2, x2), make_pair(y2, x2)));
      ma[make_pair(y2, x2)] = 1;
    }
    k--;
  }
  printf("%20.20f\n", ans / (1. * (h - r + 1) * (w - r + 1)));
  return 0;
}
