警示后人
查看原帖
警示后人
1047694
Shq_likes_AC楼主2024/7/10 12:12

本题样例构造很贼,

不入栈也能过样例

被坑实例:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#define _f first
#define _s second
using namespace std;
struct queue {
	long long q[100000];
	int tail, head;
	inline void init() { head = 0, tail = 0; }
	inline void pub(int n) { q[++tail] = n; }
	inline void puf(int n) { q[head--] = n; }
	inline void gte() { tail = head - 1; }
	inline void pob() { --tail; }
	inline void pof() { head++; }
	inline int f() { return q[head + 1]; }
	inline int b() { return q[tail]; }
	inline int s() { return tail - head; }
}q;
long long n, s, t;
long long a[1000000];
bool cmp(long long mid)
{
	q.init();
	int j = 1;
	for (int i = s; i <= n; i++)
	{
		while (q.s() && q.b() > a[i])
			q.pob();
		q.pub(i);
		if (j + t <= i)
			j++;
		if ((a[i] - a[j - 1]) * 10000ll > mid * (i - j + 1ll))
			return true;
	}
	return false;
}
int main()
{
	cin >> n >> s >> t;
	for (int i = 1, x; i <= n; i++)
		cin >> x, a[i] = a[i - 1] + x;
	long long l = -10000000, r = 10000000;


	while (l <= r)
		if (cmp(l + r >> 1))
			l = (l + r >> 1) + 1;
		else
			r = (l + r >> 1) - 1;
	printf("%.3f", l / 10000.0);
}
2024/7/10 12:12
加载中...