#include <iostream>
#include <vector>
#include <deque>
std::vector<int> maxSlidingWindow(const std::vector<int>& nums, int k) {
std::vector<int> result;
std::deque<int> dq;
for (int i = 0; i < nums.size(); ++i) {
while (!dq.empty() && dq.front() < i - k + 1)
dq.pop_front();
while (!dq.empty() && nums[dq.back()] < nums[i])
dq.pop_back();
dq.push_back(i);
if (i >= k - 1)
result.push_back(nums[dq.front()]);
}
return result;
}
int main() {
std::vector<int> nums1 = {1, 3, -1, -3, 5, 3, 6, 7};
int k1 = 3;
std::vector<int> result1 = maxSlidingWindow(nums1, k1);
std::cout << "Example 1 Output: ";
for (int val : result1)
std::cout << val << " ";
std::cout << std::endl;
std::vector<int> nums2 = {1};
int k2 = 1;
std::vector<int> result2 = maxSlidingWindow(nums2, k2);
std::cout << "Example 2 Output: ";
for (int val : result2)
std::cout << val << " ";
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZGVxdWU+CgpzdGQ6OnZlY3RvcjxpbnQ+IG1heFNsaWRpbmdXaW5kb3coY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgbnVtcywgaW50IGspIHsKICAgIHN0ZDo6dmVjdG9yPGludD4gcmVzdWx0OwogICAgc3RkOjpkZXF1ZTxpbnQ+IGRxOyAKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICB3aGlsZSAoIWRxLmVtcHR5KCkgJiYgZHEuZnJvbnQoKSA8IGkgLSBrICsgMSkKICAgICAgICAgICAgZHEucG9wX2Zyb250KCk7CgogICAgICAgIHdoaWxlICghZHEuZW1wdHkoKSAmJiBudW1zW2RxLmJhY2soKV0gPCBudW1zW2ldKQogICAgICAgICAgICBkcS5wb3BfYmFjaygpOwoKICAgICAgICBkcS5wdXNoX2JhY2soaSk7CgogICAgICAgIGlmIChpID49IGsgLSAxKQogICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKG51bXNbZHEuZnJvbnQoKV0pOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8aW50PiBudW1zMSA9IHsxLCAzLCAtMSwgLTMsIDUsIDMsIDYsIDd9OwogICAgaW50IGsxID0gMzsKICAgIHN0ZDo6dmVjdG9yPGludD4gcmVzdWx0MSA9IG1heFNsaWRpbmdXaW5kb3cobnVtczEsIGsxKTsKCiAgICBzdGQ6OmNvdXQgPDwgIkV4YW1wbGUgMSBPdXRwdXQ6ICI7CiAgICBmb3IgKGludCB2YWwgOiByZXN1bHQxKQogICAgICAgIHN0ZDo6Y291dCA8PCB2YWwgPDwgIiAiOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IG51bXMyID0gezF9OwogICAgaW50IGsyID0gMTsKICAgIHN0ZDo6dmVjdG9yPGludD4gcmVzdWx0MiA9IG1heFNsaWRpbmdXaW5kb3cobnVtczIsIGsyKTsKCiAgICBzdGQ6OmNvdXQgPDwgIkV4YW1wbGUgMiBPdXRwdXQ6ICI7CiAgICBmb3IgKGludCB2YWwgOiByZXN1bHQyKQogICAgICAgIHN0ZDo6Y291dCA8PCB2YWwgPDwgIiAiOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=