import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n = in.nextInt(); int k = in.nextInt(); int[] a = new int[n]; TreeMap<Integer, Integer> tmap = new TreeMap<>((o1, o2)-> {return o2 - o1;}); for (int i = 0; i < n; i++) { a[i] = in.nextInt(); } ArrayList<Integer> res = new ArrayList<>();//结果集 //初始化pq for (int i = 0; i < k; i++) { tmap.put(a[i], tmap.getOrDefault(a[i], 0) + 1); } //滑动n-k次 for (int l = 0; l < n - k; l++) { //把当前的最大加进结果集 Iterator itr = tmap.keySet().iterator(); res.add((int)itr.next()); //滑动 //去掉左边l tmap.put(a[l], tmap.get(a[l]) - 1); if (tmap.get(a[l]) == 0) tmap.remove(a[l]); //加上右边l+k tmap.put(a[l + k], tmap.getOrDefault(a[l + k], 0) + 1); } //把最后一次移动窗口的最大值补上 Iterator itr = tmap.keySet().iterator(); res.add((int)itr.next()); //输出 for (int i = 0; i < res.size(); i++) { if (i != 0) System.out.print(" "); System.out.print(res.get(i)); } } }