import java.util.*;
import java.util.PriorityQueue;
import java.util.Comparator;
public class Solution {
   private PriorityQueue<Integer> heap=new PriorityQueue<Integer>(15,new Comparator<Integer>(){
            @Override
            public int compare(Integer o1,Integer o2){
                return o2-o1;
            }
        });

    public ArrayList<Integer> maxInWindows(int [] num, int size)
    {
        ArrayList<Integer> list = new ArrayList<>();
        if(num==null||num.length<size||size<=0||num.length==0) return list;
        for(int i=0;i<size;i++) heap.add(num[i]);
        list.add(heap.peek());
        for(int i=size;i<num.length;i++){
            heap.remove(num[i-size]);
            heap.add(num[i]);
            list.add(heap.peek());
        }
        return list;
    }
}