http://www.geeksforgeeks.org/maximum-of-all-subarrays-of-size-k/
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <string> 7 #include <fstream> 8 #include <map> 9 using namespace std; 10 11 void printKMax(int arr[], int n, int k) { 12 deque<int> S; 13 S.push_back(0); 14 for (int i = 1; i < k; i++) { 15 while (!S.empty() && arr[i] >= arr[S.back()]) S.pop_back(); 16 S.push_back(i); 17 } 18 for (int i = k; i < n; i++) { 19 cout << arr[S.front()] << " "; 20 while (!S.empty() && i - k >= S.front()) S.pop_front(); 21 while (!S.empty() && arr[S.back()] <= arr[i]) S.pop_back(); 22 S.push_back(i); 23 } 24 cout << arr[S.front()] << endl; 25 } 26 27 int main() { 28 int arr[7] = {12, 1, 78, 90, 57, 89, 56}; 29 printKMax(arr, 7, 3); 30 return 0; 31 }