슬라이딩 윈도우 알고리즘을 통해 문제를 해결할 수 있습니다.
최솟값의 범위가 부터 까지 이므로 범위는 입니다.
N과 L의 범위가 5,000,000 이기 때문에 정렬을 사용할 수 없으므로 Deque를 이용해볼 수 있습니다.



// boj p5 11003
// 최솟값 찾기
#include <iostream>
#include <deque>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, L;
deque<pair<int, int>> dq;
cin >> N >> L;
for (int k = 0; k < N; k++)
{
int tmp;
cin >> tmp;
while (dq.size() && dq.back().second > tmp)
dq.pop_back();
dq.push_back(make_pair(k, tmp));
if (dq.front().first <= k - L)
dq.pop_front();
cout << dq.front().second << ' ' ;
}
return 0;
}