滑动窗口求条
查看原帖
滑动窗口求条
776004
imnotcfz楼主2024/8/25 13:04
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

int n, k;
int a[1000005];
struct elem {
    int x, i;
};
deque<elem> q;

int main() {
    cin >> n >> k;
    for (int i = 1 ; i <= n ; i++) cin >> a[i];
    // min
    for (int i = 1 ; i <= n ; i++) {
        while (!q.empty() && a[i] <= q.back().x) q.pop_back();
        q.push_back({a[i], i});
        while (i - k >= q.front().i) q.pop_front();
        if (i >= k) cout << q.front().x << ' ';
    }
    cout << endl;
    // max
    for (int i = 1 ; i <= n ; i++) {
        while (!q.empty() && a[i] >= q.back().x) q.pop_back();
        q.push_back({a[i], i});
        while (i - k >= q.front().i) q.pop_front();
        if (i >= k) cout << q.front().x << ' ';
    }
    q.clear();
    return 0;
}

Subtask0最后一个点WA了

2024/8/25 13:04
加载中...