80分WA2和10求助!!!
查看原帖
80分WA2和10求助!!!
234964
2408727188GHR楼主2022/10/25 21:48

80分WA2和10求助!!!

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6;

int n, k;
int a[maxn];

void qmax() {
	int *q = new int[maxn], l = 0, r = 0;
	memset(q, 0, sizeof(int) * maxn);
	for (int i = 1; i <= n; i++) {
		while (l < r && q[l] + k <= i)
			l++;
		while (l < r && a[q[r - 1]] < a[i])
			r--;
		q[r++] = i;
		if (i >= k)
			cout << a[q[l]] << " ";
	}
	delete[] q;
}

void qmin() {
	int *q = new int[maxn], l = 0, r = 0;
	memset(q, 0, sizeof(int) * maxn);
	for (int i = 1; i <= n; i++) {
		while (l < r && q[l] + k <= i)
			l++;
		while (l < r && a[q[r - 1]] > a[i])
			r--;
		q[r++] = i;
		if (i >= k)
			cout << a[q[l]] << " ";
	}
	delete[] q;
}

int main() {
	ios::sync_with_stdio(0);
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	qmin();
	cout << endl;
	qmax();
}
2022/10/25 21:48
加载中...