这辈子跟精度过不去了……
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, s, t, a[N];
double sum[N];
bool check(double x){
for(int i=1;i<=n;i++)
sum[i] = sum[i - 1] + double(a[i]) - x;
deque<int> q;
for(int i=s;i<=n;i++){
while(!q.empty() && sum[q.back()] - sum[i - s] > 1e-6)
q.pop_back();
q.push_back(i - s);
if(!q.empty() && i - q.front() > t)
q.pop_front();
if(!q.empty() && sum[i] - sum[q.front()] >= 1e-6)
return 1;
}
return 0;
}
int main(){
scanf("%d%d%d", &n, &s, &t);
for(int i=1;i<=n;i++)
scanf("%d", &a[i]);
double l = -10000, r = 10000;
while(r - l > 1e-6){
double mid = (l + r) / 2.0;
if(check(mid))
l = mid + 1.0;
else
r = mid - 1.0;
}
printf("%0.3lf\n", l);
return 0;
}