Giá Trị Lớn Nhất Trong Cửa Sổ Trượt
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Cho mảng ~A~ gồm ~N~ số nguyên và số nguyên ~K~. Hãy tìm giá trị lớn nhất trong mỗi đoạn con liên tiếp có độ dài ~K~ của mảng.
Cụ thể, với mỗi ~i~ từ ~1~ đến ~N - K + 1~, hãy tính: ~\max(A_i, A_{i+1}, \ldots, A_{i+K-1})~
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên ~N~ và ~K~ ~(1 \le K \le N \le 10^6)~.
- Dòng thứ hai chứa ~N~ số nguyên ~A_1, A_2, \ldots, A_N~ ~(-10^9 \le A_i \le 10^9)~.
Dữ liệu ra
In ra ~N - K + 1~ số nguyên trên một dòng, cách nhau bởi dấu cách — giá trị lớn nhất của từng cửa sổ.
Ví dụ
Input:
8 3
1 3 -1 -3 5 3 6 7
Output:
3 3 5 5 6 7
Giải thích:
| Cửa sổ | Phần tử | Max |
|---|---|---|
| [1..3] | 1, 3, -1 | 3 |
| [2..4] | 3, -1, -3 | 3 |
| [3..5] | -1, -3, 5 | 5 |
| [4..6] | -3, 5, 3 | 5 |
| [5..7] | 5, 3, 6 | 6 |
| [6..8] | 3, 6, 7 | 7 |
Giới hạn
| Subtask | Điểm | Điều kiện |
|---|---|---|
| 1 | 30% | ~N \le 1000~ — có thể dùng brute-force |
| 2 | 70% | ~N \le 10^6~ — cần dùng Deque |
Gợi ý: Dùng deque<int> lưu chỉ số các phần tử, duy trì bất biến deque là đơn điệu giảm về giá trị. Đây là kỹ thuật Monotonic Deque kinh điển.
Bình luận