数据下下来自己跑一遍也没有问题。。。 求dalao帮看看哪里出问题了,re说内存访问错误
#include <iostream>
#include <deque>
using namespace std;
const int MAXN = 100000%;
int n, k, a[MAXN], s[MAXN];
deque<int> dq; // 求最大值,单调递减 求最小值,单调递增
void domax() {
dq.clear();
for (int i = 1; i <= n; i++) {
if (dq.front() < i-k+1) // 队头滑出
dq.pop_front();
while (!dq.empty() && a[i] >= a[dq.back()]) {
dq.pop_back();
} dq.push_back(i);
if (i >= k)
s[i-k+1] = dq.front();
}
}
void domin() {
for (int i = 1; i <= n; i++) {
if (dq.front() < i-k+1) // 队头滑出
dq.pop_front();
while (!dq.empty() && a[i] <= a[dq.back()]) {
dq.pop_back();
} dq.push_back(i);
if (i >= k)
s[i-k+1] = dq.front();
}
}
int main() {
// freopen("r.in", "r", stdin);
// freopen("w.out", "w", stdout);
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> a[i];
domin();
for (int i = 1; i <= n-k+1; i++)
cout << a[s[i]] << ' ';
cout << endl;
domax();
for (int i = 1; i <= n-k+1; i++)
cout << a[s[i]] << ' ';
cout << endl;
return 0;
}
/*
8 3
1 3 -1 -3 5 3 6 7
*/