91分怎么优化
查看原帖
91分怎么优化
581007
xhT02楼主2025/7/21 21:55
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
int main()
{
    int n, m, t;
    vector<int> a;
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &t);
        a.push_back(t);
    }

    puts("0");

    deque<int> ans, ans_num;
    ans.push_back(a[0]), ans_num.push_back(0);
    for (int i = 1; i < n; i++)
    {
        printf("%d\n", ans.front());
        while (!ans.empty() && ans_num.front() <= i - m)
            ans.pop_front(), ans_num.pop_front();
        if (i - m >= 0 && ans.front() == a[i])
            ans.pop_front(), ans_num.pop_front();
        while (!ans.empty() && ans.back() >= a[i])
            ans.pop_back(), ans_num.pop_back();
        ans.push_back(a[i]), ans_num.push_back(i);
    }
    return 0;
}
2025/7/21 21:55
加载中...