Sokoban một chiều
Đề bài
Mô tả
Bạn đang chơi một trò chơi giống Sokoban trên đường thẳng số nguyên vô tận. Bạn bắt đầu tại vị trí . Có hộp đặt tại các vị trí (phân biệt, khác ). Có vị trí đặc biệt (phân biệt, khác ).
Mỗi nước đi, bạn di chuyển sang trái hoặc sang phải đơn vị. Nếu theo hướng đó có một hộp ngay sát bạn, bạn sẽ đẩy hộp đó đi đơn vị về phía trước; nếu hộp đó lại sát một hộp khác thì hộp tiếp theo cũng bị đẩy, và cứ như vậy. Bạn không thể đi xuyên qua hộp, không thể kéo hộp về phía mình.
Bạn được phép thực hiện một số lượng nước đi bất kỳ (có thể là ). Mục tiêu là đặt được càng nhiều hộp lên các vị trí đặc biệt càng tốt. Lưu ý rằng một số hộp có thể đã sẵn ở vị trí đặc biệt ngay từ đầu.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số bộ dữ liệu.
- Mỗi bộ dữ liệu gồm ba dòng:
- Dòng 1: hai số nguyên và .
- Dòng 2: số nguyên — vị trí các hộp.
- Dòng 3: số nguyên — vị trí đặc biệt.
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra một số nguyên — số hộp nhiều nhất có thể đặt lên vị trí đặc biệt.
Ràng buộc
- , , .
- Tổng trên tất cả bộ dữ liệu không vượt quá . Tổng trên tất cả bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 5 6 -1 1 5 11 15 -4 -3 -2 6 7 15 2 2 -1 1 -1000000000 1000000000 2 2 -1000000000 1000000000 -1 1 3 5 -1 1 2 -2 -1 1 2 5 2 1 1 2 10 |
4 2 0 3 1 |
Bộ 1: đi trái đẩy hộp thành (đặt được ); đi phải đẩy nhóm lên các vị trí phù hợp; hộp vốn ở vị trí đặc biệt. Tổng đạt được . Bộ 2: hai hộp và chỉ cần đẩy tới và là đạt . Bộ 3: các hộp ở quá xa các vị trí đặc biệt, không thể đặt hộp nào. |
Bình luận