Tìm phần tử lớn nhất trong cửa sổ trượt

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Python
Tìm phần tử lớn nhất trong cửa sổ trượt
Mô tả và yêu cầu

Mã bài: CUASOTRUOT.*
Tìm phần tử lớn nhất trong cửa sổ trượt (Sliding Window Maximum)
Cho một mảng số nguyên A có N phần tử và một số nguyên K là kích thước
cửa sổ. Di chuyển một cửa sổ có độ dài K từ trái sang phải (mỗi lần dịch sang phải
1 vị trí).
Yêu cầu: Với mỗi vị trí của cửa sổ, hãy tìm giá trị lớn nhất trong cửa sổ đó.
Trả về dãy các giá trị lớn nhất theo thứ tự các vị trí cửa sổ.

Dữ liệu vào

 Dòng 1: hai số nguyên N và K (số phần tử và kích thước cửa sổ).
 Dòng 2: N số nguyên A1,A2,…,AN (các phần tử của mảng).

Dữ liệu ra

 In ra các giá trị lớn nhất của mỗi cửa sổ, theo thứ tự từ trái sang phải,
cách nhau bởi dấu cách . Số lượng giá trị in ra bằng N−K+1 (nếu K≤N ).
Ràng buộc: 1≤ N≤106 ; ∣Ai∣≤109; 1≤K≤N.

Ví dụ 1:
INPUT OUTPUT Giải thích
8 3 3 3 5 5 6 7 Giải thích cửa sổ (k = 3):
1 3 -1 -3 5 3 6 7  [1, 3, -1] → max = 3
 [3, -1, -3] → max = 3
 [-1, -3, 5] → max = 5
 [-3, 5, 3] → max = 5
 [5, 3, 6] → max = 6
 [3, 6, 7] → max = 7

Ví dụ 2:
INPUT OUTPUT
5 1 2 8 -4 0 5
2 8 -4 0 5

Ví dụ 3:
INPUT OUTPUT
5 5 8
2 8 -4 0 5

Tải PDF gốc


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.