#include <bits/stdc++.h>
using namespace std;
long long n, m, r, k;
struct cell {
  long long x, y, d;
  long long val;
  cell(long long x, long long y, long long d) : x(x), y(y), d(d) {
    val = (min(x + r, n + 1) - max(r, x)) * (min(y + r, m + 1) - max(r, y));
  }
};
class comp {
 public:
  bool operator()(const cell& a, const cell& b) { return a.val < b.val; }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long TESTS = 1;
  while (TESTS--) {
    cin >> n >> m >> r >> k;
    priority_queue<cell, vector<cell>, comp> p;
    for (long long int i = 1; i < n + 1; i++) {
      long long mid = (m + 1) / 2;
      p.push({i, mid, 0});
      p.push({i, mid + 1, 1});
    }
    long long total = 0;
    for (long long int i = 0; i < k; i++) {
      cell maxc = p.top();
      p.pop();
      total += maxc.val;
      if (maxc.d == 0 && maxc.y > 1)
        p.push({maxc.x, maxc.y - 1, 0});
      else if (maxc.d == 1 && maxc.y < m)
        p.push({maxc.x, maxc.y + 1, 1});
    }
    cout << setprecision(10);
    cout << (double)((double)total / (double)((n - r + 1) * (m - r + 1)));
  }
  return 0;
}
