不知道哪里错了……样例对了???
#include <cstdio>
using namespace std;
const int N = 100005;
int n, s, t;
int a[N];
double sum[N];
int q[N];
bool check (double now) {
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + a[i];
sum[i] -= now;
}
int l = 1, r = 0;
for (int i = s; i <= n; i++) {
while (l <= r && sum[i - s] >= sum[q[r]]) r--;
q[++r] = i - s;
if (l <= r > q[l] < i - t) l++;
if (l <= r && sum[i] - sum[q[l]] >= 0) return true;
}
return false;
}
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, mid;
while (r - l > 1e-6) {
mid = (l + r) / 2;
if (check(mid)) {
l = mid;
} else {
r = mid;
}
}
printf("%.3lf", l);
return 0;
}