1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> #include <utility> #include <deque> using namespace std; deque<pair<int, int> > dq; int arr[10000000] = { 0 }; int main() { int n, l; scanf("%d %d", &n, &l); getchar(); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < n; i++) { while (dq.empty() == false && dq.back().first > arr[i]) { dq.pop_back(); } dq.push_back(make_pair(arr[i],i)); while (dq.front().second <= i - l) { dq.pop_front(); } printf("%d ", dq.front().first); } } | cs |
알고리즘/슬라이딩 윈도우