Sliding Window Maximum - YessineJallouli/Competitive-Programming GitHub Wiki
vector<int> maxSlidingWindow(vector<int>& a, int k) {
deque<int> d;
vector<int> ans;
int n = (int) a.size();
for (int i = 0; i < n; i++) {
if (!d.empty() && d.front() == i - k)
d.pop_front();
while (!d.empty() && a[d.back()] < a[i])
d.pop_back();
d.push_back(i);
if (i >= k - 1)
ans.push_back(a[d.front()]);
}
return ans;
}
Problems:
https://codeforces.com/contest/372/problem/C
https://codeforces.com/gym/105190/problem/J