#include <bits/stdc++.h>
using namespace std;
void solve() {
  long long n, m, r, k;
  vector<long long> row, col;
  cin >> n >> m >> r >> k;
  for (long long i = 1; i < n + 1; i++)
    row.push_back(min({r, i, n - r + 1 - max(0LL, i - r)}));
  for (long long i = 1; i < m + 1; i++)
    col.push_back(min({r, i, m - r + 1 - max(0LL, i - r)}));
  sort((row).begin(), (row).end());
  sort((col).begin(), (col).end());
  reverse((row).begin(), (row).end());
  reverse((col).begin(), (col).end());
  set<pair<long long, pair<long long, long long>>> s, ss;
  double ans = 0LL, den = (n - r + 1) * (m - r + 1), cur = 0LL;
  s.insert({row[0LL] * col[0LL], {0LL, 0LL}});
  map<pair<long long, long long>, long long> mp;
  mp[{0, 0}] = 1;
  for (long long i = 0LL; i < k; i++) {
    pair<long long, pair<long long, long long>> d = *s.rbegin();
    long long val = d.first, L = d.second.first, R = d.second.second;
    ans += val;
    mp[{L, R}] = 1;
    s.erase(d);
    if (R < m - 1 && mp[{L, R + 1}] == 0LL)
      s.insert({row[L] * col[R + 1], {L, R + 1}});
    if (L < n - 1 && mp[{L + 1, R}] == 0LL)
      s.insert({row[L + 1] * col[R], {L + 1, R}});
  }
  cout << fixed << setprecision(10LL) << ans / den;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0LL);
  cout.tie(0LL);
  long long t = 1;
  while (t--) solve();
  return 0LL;
}
