#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define SZ(a) (int)(a).size()
typedef long long ll;
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace __gnu_pbds;
typedef tree<double, null_type, greater<double>, rb_tree_tag, tree_order_statistics_node_update> oset;
const auto eps = 1e-3;
const auto mlpy = 10;
int n, l, r;
ll m;
vector<double> a;
int nr;
bool f(double mean) {
auto k = 0ll;
vector<double> b(n+1);
b[0] = 0;
for (auto i = 1; i <= n; i++) {
b[i] = b[i-1]+a[i-1]-mean;
}
oset o;
for (auto i = l; i <= n; i++) {
auto s = b[i-l];
while (!o.insert(s).second) {
s = b[i-l]+(double)(rand()%nr)/nr*eps;
}
if (i >= r) {
o.erase(o.lower_bound(b[i-r]));
}
k += o.order_of_key(b[i]+eps);
if (k >= m) {
return true;
}
}
return false;
}
double bsearch(double lo, double up) {
auto mi = (lo+up)/2;
if (up-lo < eps) {
return mi;
}
if (f(mi)) {
bsearch(lo, mi);
}
else {
bsearch(mi, up);
}
}
int main() {
cin.sync_with_stdio(false);
cin >> n >> l >> r >> m;
r++;
nr = n*mlpy;
a.resize(n);
for (auto i = 0; i < n; i++) {
cin >> a[i];
}
auto ans = bsearch(1.0, 1e6);
printf("%f\n", ans);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIFNaKGEpIChpbnQpKGEpLnNpemUoKQp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKIAojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+IC8vIENvbW1vbiBmaWxlCiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPiAgICAgLy8gSW5jbHVkaW5nIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZQogCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwogCnR5cGVkZWYgdHJlZTxkb3VibGUsIG51bGxfdHlwZSwgZ3JlYXRlcjxkb3VibGU+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBvc2V0OwogCmNvbnN0IGF1dG8gZXBzID0gMWUtMzsKY29uc3QgYXV0byBtbHB5ID0gMTA7CmludCBuLCBsLCByOwpsbCBtOwp2ZWN0b3I8ZG91YmxlPiBhOwppbnQgbnI7CiAKYm9vbCBmKGRvdWJsZSBtZWFuKSB7CglhdXRvIGsgPSAwbGw7Cgl2ZWN0b3I8ZG91YmxlPiBiKG4rMSk7CgliWzBdID0gMDsKCWZvciAoYXV0byBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQliW2ldID0gYltpLTFdK2FbaS0xXS1tZWFuOwoJfQoJb3NldCBvOwoJZm9yIChhdXRvIGkgPSBsOyBpIDw9IG47IGkrKykgewoJCWF1dG8gcyA9IGJbaS1sXTsKCQl3aGlsZSAoIW8uaW5zZXJ0KHMpLnNlY29uZCkgewoJCQlzID0gYltpLWxdKyhkb3VibGUpKHJhbmQoKSVucikvbnIqZXBzOwoJCX0KCQlpZiAoaSA+PSByKSB7CgkJCW8uZXJhc2Uoby5sb3dlcl9ib3VuZChiW2ktcl0pKTsKCQl9CgkJayArPSBvLm9yZGVyX29mX2tleShiW2ldK2Vwcyk7CgkJaWYgKGsgPj0gbSkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CglyZXR1cm4gZmFsc2U7Cn0KIApkb3VibGUgYnNlYXJjaChkb3VibGUgbG8sIGRvdWJsZSB1cCkgewoJYXV0byBtaSA9IChsbyt1cCkvMjsKCWlmICh1cC1sbyA8IGVwcykgewoJCXJldHVybiBtaTsKCX0KCWlmIChmKG1pKSkgewoJCWJzZWFyY2gobG8sIG1pKTsKCX0KCWVsc2UgewoJCWJzZWFyY2gobWksIHVwKTsKCX0KfQogCmludCBtYWluKCkgewoJY2luLnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4gPj4gbiA+PiBsID4+IHIgPj4gbTsKCXIrKzsKCW5yID0gbiptbHB5OwoJYS5yZXNpemUobik7Cglmb3IgKGF1dG8gaSA9IDA7IGkgPCBuOyBpKyspIHsKCQljaW4gPj4gYVtpXTsKCX0KCWF1dG8gYW5zID0gYnNlYXJjaCgxLjAsIDFlNik7CglwcmludGYoIiVmXG4iLCBhbnMpOwoJcmV0dXJuIDA7Cn0KIA==