全wa求调
查看原帖
全wa求调
385049
111abcd楼主2022/7/31 09:35

不知道哪里错了……样例对了???

#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;
}
2022/7/31 09:35
加载中...