#3#4#7 WA
查看原帖
#3#4#7 WA
1312537
wfirstzhang楼主2024/5/12 15:14
#include <cstdio>
using namespace std;
struct que_ele { int pos, value; que_ele():pos(0),value(0){} };
que_ele min_que[16266035];
int front = 0, tail = 0;
int insert(const int num, const int period, const int pos) {
	while (tail >= front && min_que[front].pos <= pos - period)
		front++;
	const int res = min_que[front].value; //前period项的队列头
	while (tail >= front && min_que[tail - 1].value >= num)
		tail--; //比num大的踢出队列
	min_que[tail].value = num;
	min_que[tail++].pos = pos;
	return res;
}
inline int& query_min(void) {
	return min_que[front].value;
}
int main() {
	int n, m, temp = 0;
	scanf("%d%d", &n, &m);
	for(int i = 0; i < n; i++)
	{
		scanf("%d", &temp);
		printf("%d\n", insert(temp, m, i));
	}
	return 0;
}

第三个点数据

答案输出

0 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 12 12 12 12
12 12 22 22 22 22 22 22 17 17
17 17 17 17 17 17 17 17 17 17
17 17 17 33 33 33 33 33 33 33
37 37 19 19 19 19 19 19 19 19
19 19 19 19 19 19 19 28 28 19
19 19 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 1 1 1
1 1 1 1 1 1 1 1 1 1

我的输出

0 5 5 5 5 5 5 5 5 5
5 5 5 5 5 12 12 12 12 12
12 22 22 22 22 22 22 22 17 17
17 17 17 17 17 17 17 17 17 17
17 17 33 33 33 33 33 33 33 37
37 37 37 44 44 44 44 44 28 28
28 28 28 28 28 28 28 28 28 28
188 56 56 65 65 29 29 29 29 29
29 29 29 27 27 27 27 27 186 19
19 19 19 19 19 19 18 2 2 2

代码 7070 分,目测有些问题。

2024/5/12 15:14
加载中...