模板:单调队列 / 滑动窗口
deque<int> deq;
for (int i = 1; i < k; ++i) {
while (deq.size() && a[i] >= a[deq.back()]) deq.pop_back();
deq.push_back(i);
}
for (int i = k; i <= n; ++i) {
while (deq.size() && deq.front() <= i - k) deq.pop_front();
while (deq.size() && a[i] >= a[deq.back()]) deq.pop_back();
deq.push_back(i);
ans.push_back(deq.front());
}

浙公网安备 33010602011771号