Qua sông
Đề bài
Mô tả
Có người đang đứng ở bờ này của một con sông và muốn sang bờ bên kia. Phương tiện duy nhất là một chiếc thuyền chở được tổng khối lượng tối đa kg. Khối lượng của mỗi người là đúng kg hoặc đúng kg.
Thuyền không tự di chuyển được, nên mỗi lượt đi (theo bất kỳ chiều nào) phải có ít nhất một người ngồi trên thuyền, và tổng khối lượng những người trên thuyền không được vượt quá .
Hãy tìm số lượt đi thuyền ít nhất để đưa được toàn bộ người sang bờ bên kia. Ngoài ra, hãy đếm số cách thực hiện việc chuyên chở bằng đúng số lượt tối thiểu đó. Những người được đánh số phân biệt với nhau; hai cách được coi là khác nhau nếu tồn tại một lượt đi mà tập người ngồi trên thuyền ở hai cách là khác nhau.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số người và giới hạn khối lượng của thuyền.
- Dòng thứ hai chứa số nguyên — khối lượng của từng người.
Dữ liệu ra
- Dòng đầu in số lượt đi thuyền ít nhất, hoặc nếu không thể đưa tất cả mọi người sang bờ bên kia.
- Dòng thứ hai in số cách chuyên chở bằng đúng số lượt tối thiểu, lấy phần dư khi chia cho . In nếu không thể thực hiện được.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 50 50 |
1 1 |
Chỉ có một người nặng kg, tự chèo thuyền sang bờ bên kia trong lượt. Chỉ có đúng cách. |
| 3 100 50 50 100 |
5 2 |
Kế hoạch tối ưu: chở hai người kg sang; một người kg chèo về; chở người kg sang; một người kg chèo về; chở hai người kg sang. Tổng cộng lượt. Ở lượt thứ hai có lựa chọn người quay về, nên có cách. |
| 2 50 50 50 |
-1 0 |
Thuyền chỉ chở được một người mỗi lượt. Người nào sang bờ bên kia cũng phải tự chèo thuyền quay lại, nên không bao giờ đưa được cả hai người sang. |
Bình luận