80分
查看原帖
80分
398155
某kob在此楼主2022/1/16 18:14

不解,救助

# include <bits/stdc++.h>
using namespace std;

struct num
{
	int p, s;
};

int n, k;
int a[1000005];

int head, tail;
num q1[1000005], q2[1000005];

int main(void)
{
	cin >> n >> k;
	
	for (int i = 1; i <= n; i ++)
		cin >> a[i];
	
	head = tail = 1;
	q1[1] = q2[1] = (num){1, a[1]};
	for (int i = 2; i <= n; i ++)
	{
		tail ++;
		q1[tail] = (num){i, a[i]};
		if (q1[tail].p - q1[head].p == k)
			head ++;
		while (q1[tail - 1].s >= q1[tail].s && tail - 1 >= head)
		{
			q1[tail - 1] = q1[tail];
			tail --;
		}
		if (i >= k)	cout << q1[head].s << " ";
	}
	cout << endl;
	
	head = tail = 1;
	for (int i = 2; i <= n; i ++)
	{
		tail ++;
		q1[tail] = (num){i, a[i]};
		if (q1[tail].p - q1[head].p == k)
			head ++;
		while (q1[tail - 1].s <= q1[tail].s && tail - 1 >= head)
		{
			q1[tail - 1] = q1[tail];
			tail --;
		}
		if (i >= k)	cout << q1[head].s << " ";
	}
	cout << endl;
	
	return 0;
}
2022/1/16 18:14
加载中...