Thông báo đẩy

View as PDF



Author:
Problem type
Points: 10 (p) Time limit: 2.0s Memory limit: 256M Input: stdin Output: stdout

Hoa có một chiếc máy tính bảng, màn hình chỉ hiển thị được tối đa \(k\) cửa sổ thông báo ứng dụng. Nguyên tắc hiển thị trên màn hình như sau:

  1. Trên màn hình không bao giờ hiển thị hai cửa sổ thông báo của cùng một ứng dụng. Nếu ứng dụng \(x\) gửi thông báo mới mà trên màn hình đã có thông báo của ứng dụng \(x\) thì màn hình không thay đổi.
  2. Nếu ứng dụng \(x\) gửi thông báo mới mà trên màn hình chưa có thông báo của ứng dụng \(x\) thì:
    • Nếu số lượng thông báo trên màn hình chưa đạt \(k\), thông báo mới sẽ được thêm vào cuối màn hình.
    • Nếu màn hình đã đủ \(k\) thông báo thì thông báo ở đầu màn hình sẽ bị đẩy ra, đồng thời thông báo của ứng dụng \(x\) sẽ được thêm vào cuối.

Cho dãy \(a\) biểu diễn các ứng dụng lần lượt gửi thông báo cho Hoa. Hãy xác định sau khi nhận hết thông báo, màn hình của Hoa đang hiển thị thông báo của những ứng dụng nào. Kết quả cần in ra theo thứ tự từ trên xuống dưới của màn hình.

Input Specification

  • Dòng 1: số nguyên dương \(n\) – số lượng thông báo gửi đến.
  • Dòng 2: gồm \(n\) số nguyên \(a_1, a_2, \dots, a_n\) – mỗi số biểu diễn số thứ tự của ứng dụng gửi thông báo.
  • Dòng 3: số nguyên dương \(k\) – số lượng thông báo tối đa màn hình có thể hiển thị.

Output Specification

  • In ra dãy số thứ tự của các ứng dụng còn lại trên màn hình sau cùng, theo thứ tự từ trên xuống dưới.

Constraints

  • \(1 \leq n \leq 10^5\)
  • \(1 \leq a_i \leq 10^9\)
  • \(1 \leq k \leq 10^4\)

Input Sample

7  
1 2 1 3 4 5 2  
3

Output Sample

4 5 2

Giải thích ví dụ

- Ban đầu màn hình rỗng `[]`.  
- Ứng dụng 1 gửi thông báo → `[1]`.  
- Ứng dụng 2 gửi thông báo → `[1, 2]`.  
- Ứng dụng 1 gửi lại → không thay đổi `[1, 2]`.  
- Ứng dụng 3 gửi thông báo → `[1, 2, 3]`.  
- Ứng dụng 4 gửi thông báo, màn hình đã đủ 3 nên bỏ đi 1, thêm 4 vào cuối → `[2, 3, 4]`.  
- Ứng dụng 5 gửi thông báo, bỏ 2 → `[3, 4, 5]`.  
- Ứng dụng 2 gửi lại, chưa có trên màn hình, bỏ 3 → `[4, 5, 2]`.

Kết quả cuối cùng là `4 5 2`.

Comments

There are no comments at the moment.