1 #include<bits/stdc++.h> 2 using namespace std; 3 const int M = 1e6 + 10 , inf = 0x3f3f3f3f ; 4 int s ; 5 int n , k ; 6 int a[M] ; 7 int b[M] , tot ; 8 void solve () { 9 deque<int> q ; 10 deque<int>::iterator it ; 11 for (int i = 0 ; i < k ; i ++) { 12 if (q.empty ()) q.push_back (i); 13 else { 14 it = q.end () - 1 ; 15 while (*it >= a[i] && !q.empty ()) { 16 q.pop_back () ; 17 it -- ; 18 } 19 q.push_back (i) ; 20 } 21 } 22 b[tot++] = q.front () ; 23 if (q.front () == 0) q.pop_front () ; 24 for (int i = k ; i < n ; i ++) { 25 if (q.empty ()) q.push_back (i) ; 26 else { 27 it = q.end () - 1 ; 28 while (*it >= a[i] && !q.empty ()) { 29 q.pop_back () ; 30 it -- ; 31 } 32 q.push_back (i) ; 33 } 34 b[tot++] = q.front () ; 35 if (q.front () == i-k+1) q.pop_front () ; 36 } 37 for (int i = 0 ; i < tot ; i ++) { 38 printf ("%d " , a[b[i]]) ; 39 } puts ("") ; 40 } 41 42 int main () { 43 cin >> n >> k ; 44 for (int i = 0 ; i < n ; i ++) cin >> a[i] ; 45 solve () ; 46 return 0 ; 47 }