DHBB 2026 - DX13 - 11 - Thang máy siêu hẹp
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Trong một thành phố nọ có một tòa nhà cao ~n~ tầng. Có ~n~ người đang chờ thang máy ở tầng trệt. Người thứ ~i~ muốn lên tầng ~a_i~. Không có hai người nào muốn lên cùng một tầng. Tòa nhà có một thang máy đủ rộng cho tất cả mọi người, nhưng nó quá hẹp đến nỗi hai người không thể đứng cạnh nhau; người này phải đứng sau người kia.
Mọi người đều vào thang máy, nhưng họ không nghĩ đến thứ tự ra khỏi thang máy! Ban đầu, người thứ ~i~ ở vị trí ~i~, nhìn từ cửa thang máy. Nếu một người muốn ra khỏi thang máy, tất cả những người phía trước họ (gần cửa hơn) phải tạm thời ra khỏi thang máy. Khi quay trở lại thang máy, họ có thể sắp xếp lại thứ tự theo ý muốn. Những người ở phía sau (xa cửa hơn) người muốn ra khỏi thang máy sẽ không ra khỏi thang máy.
Mirko đang quan sát tình hình hiện tại và suy nghĩ. Anh ấy muốn biết sẽ có bao nhiêu lượt ra khỏi thang máy nếu mọi người luôn quay trở lại thang máy một cách tối ưu (Để tối ưu, họ sẽ sắp xếp sao cho số lần người phải bước ra ở các tầng sau là ít nhất). Nếu một người ra khỏi thang máy nhiều lần, mỗi lần được tính riêng. Slavko - người bạn của Mirko cũng đưa cho anh ấy câu hỏi: Nếu người ở vị trí ~x_i~ không ở trong thang máy, thì sẽ có bao nhiêu lượt người đi ra khỏi thang máy?
Mirko sẽ phải trả lời cho câu hỏi của mình và các câu hỏi của Slavko. Lưu ý rằng đối với mỗi câu hỏi, tất cả những người không ở trong thang máy từ các câu hỏi trước cũng sẽ không ở thang máy hiện tại. Bạn hãy giúp Mirko giải quyết vấn đề này!
Lưu ý: Thang máy sẽ luôn di chuyển từ tầng ~1~ đến tầng ~n~ và dừng lại ở mọi tầng mà có người muốn ra.
Input
Dòng đầu tiên chứa hai số nguyên không âm ~n~ và ~q~ ~(0 \le q < n \le 10^5)~, số người/tầng và số câu hỏi.
Dòng thứ hai chứa ~n~ số nguyên ~a_i~ ~(1 \le a_i \le n, a_i \ne a_j~ với mỗi ~i \ne j)~, trong đó ~a_i~ là tầng mà người thứ ~i~ muốn ra khỏi thang máy. Dãy ~(a_i)~ là một hoán vị.
Dòng thứ ba chứa ~q~ số nguyên ~x_i~ ~(1 \le x_i \le n, x_i \ne x_j~ với mỗi ~i \ne j)~, lần lượt là vị trí của các người không ở trong thang máy trong câu hỏi của Slavko.
Output
Trong một dòng, hãy in ra ~q+1~ số trả lời cho ~q+1~ trường hợp: ban đầu và sau mỗi lần có một người ở vị trí ~x_i~ không đi thang máy nữa.
Scoring
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | ~16\%~ | ~n,q \le 100~ |
| 2 | ~19\%~ | ~n,q \le 1000~ |
| 3 | ~29\%~ | ~q=0~ |
| 4 | ~46\%~ | Không có ràng buộc gì thêm |
Sample Input 1
5 2
3 4 1 2 5
3 2
Sample Output 1
9 6 4
Notes
Trường hợp ban đầu:
Để tối ưu, khi những người tạm bước ra quay trở lại, họ sẽ đứng theo thứ tự: ai xuống tầng cao hơn thì đứng xa cửa hơn.
Tầng ~1~: Người muốn xuống tầng ~1~ đang đứng ở vị trí ~3~.
Để người này ra, người ở vị trí ~1~ và ~2~ phải bước ra.
Tổng lượt ra: ~3~ (vị trí ~1,2~ và người tầng ~1~).
Còn lại trong thang: ~\{3,4,2,5\}~. Họ sắp xếp lại để người tầng ~2~ đứng gần cửa nhất.
Tầng ~2~: Người muốn xuống tầng ~2~ hiện đang ở gần cửa.
~2~ người đầu hàng vẫn phải bước ra để người tầng ~2~ bước ra.
Tổng lượt ra: ~3~.
Còn lại: ~\{3,4,5\}~.
Tầng ~3~: Người muốn xuống tầng ~3~ đang ở gần cửa nhất, và họ bước ra luôn. Vậy chỉ cần ~1~ lượt bước ra.
Tầng ~4~: Người muốn xuống tầng ~4~ đang ở gần cửa nhất. Vậy chỉ cần ~1~ người bước ra.
Tầng ~5~: Người cuối cùng: Chỉ cần ~1~ người bước ra.
Tổng cộng: ~3+3+1+1+1=9~ lượt ra.
Với ~2~ câu hỏi sau:
Loại bỏ người ở vị trí ~3~ (người xuống tầng ~1~):
Trong thang còn các người muốn xuống tầng: ~\{3,4,2,5\}~.
Tính toán tương tự, tổng lượt ra lúc này giảm xuống còn ~6~.
Loại bỏ tiếp người ở vị trí ~2~ (người xuống tầng ~4~):
Trong thang còn: ~\{3,2,5\}~.
Tổng lượt ra lúc này chỉ còn ~4~.
Kết quả cuối cùng in ra: ~9\ 6\ 4~.
Bình luận