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
Máy ATM
Mô tả và yêu cầu

Bạn Phúc có n các tờ tiền mệnh giá a1, a2, ..., an, mỗi mệnh giá đôi một khác nhau. Phúc muốn chọn ra một số tờ tiền từ n tờ tiền đã có để tổng của chúng được s đồng.

Yêu cầu: Hãy viết chương trình điều khiển xác định xem có cách chọn ra đúng s đồng từ các tờ tiền mệnh giá đã cho hay không. Nếu có cách chọn, hãy liệt kê tất cả các cách để có s đồng. Nếu không in ra số -1.

Ví dụ với 3 mệnh giá 10, 20, 50 và số tiền Phúc cần chọn ra để có tổng là 60 thì có phương án đưa ra là tờ mệnh giá 10 và tờ mệnh giá 50.

Dữ liệu vào

Vào thiết bị xuất chuẩn:
- Dòng đầu tiên chứa một số nguyên n.
- Dòng thứ hai chứa n số nguyên a1, a2, ..., an theo thứ tự tăng dần.
- Dòng thứ 3 chứa số nguyên s.

Các số trên cùng một dòng của file dữ liệu vào và file kết quả cách nhau một khoảng trắng.

Dữ liệu ra

Đưa ra thiết bị xuất chuẩn (màn hình): nếu không có cách chọn thì ghi ra số -1, trong trường hợp có cách trả: mỗi dòng ghi phương án là các mệnh giá chọn được.

Chú ý: phương án để có s đồng được liệt kê các số theo hàng giảm dần, các trên cùng một dòng theo thứ tự tăng dần.

Giới hạn và chấm điểm

1 ≤ n ≤ 20
1 ≤ ai < aj ≤ 105, 1 ≤ i < j ≤ n
1 ≤ s ≤ 10^6

Ví dụ
InputOutput
5
10 20 30 50 60
60
60
10 50
10 20 30

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.