Biết Tấm dốt Hóa, mẹ con Cám lại nghĩ ra một trò mới để chơi khó. Trong hầm rượu có \(n\) loại rượu đánh số từ \(1\) tới \(n\), mỗi loại rượu có số chai không hạn chế, mỗi chai chứa đúng \(1\) lít (\(1000\) ml). Mỗi chai rượu loại \(i\) có nồng độ cồn là \(a_i\), tương ứng với số ml cồn trong chai.
Nhiệm vụ của Tấm là lấy ra một số ít nhất các chai rượu (ít nhất \(1\) chai) trộn vào nhau để được một hỗn hợp có nồng độ cồn đúng bằng \(q\), tức là nếu lấy \(c_i\) chai loại \(i\) thì phải có
Hãy giúp Tấm thực hiện yêu cầu đó.
Input
- Dòng \(1\) chứa hai số nguyên \(n, q\) (\(1 \le n \le 1000\); \(0 \le q \le 100\)).
- Dòng \(2\) chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) (\(0 \le a_i \le 100\)).
Output
- Dòng \(1\) ghi
YEShayNOtùy theo có phương án thực hiện được yêu cầu hay không. - Nếu đáp án là
YES, dòng \(2\) in ra \(n\) số \(c_1, c_2, \ldots, c_n\) — số chai cần dùng của mỗi loại, với tổng số chai \(c_1 + c_2 + \cdots + c_n\) nhỏ nhất có thể.
Quy tắc chọn đáp án duy nhất: nếu có nhiều phương án cùng dùng ít chai nhất, hãy chọn phương án có số chai loại \(1\) nhiều nhất; nếu vẫn còn nhiều phương án thì chọn phương án có số chai loại \(2\) nhiều nhất, và cứ tiếp tục như vậy (tức là trong các phương án tối ưu, chọn dãy \((c_1, c_2, \ldots, c_n)\) lớn nhất theo thứ tự từ điển).
Sample Input 1
4 6
1 37 1 1
Sample Output 1
YES
31 5 0 0
Sample Input 2
4 24
17 46 17 17
Sample Output 2
YES
22 7 0 0
Sample Input 3
7 87
24 95 69 80 38 38 24
Sample Output 3
YES
0 4 1 2 0 0 0
Notes
Ở ví dụ \(1\): trộn \(31\) chai loại \(1\) và \(5\) chai loại \(2\) được \(31 \cdot 1 + 5 \cdot 37 = 216\) ml cồn trong \(36\) lít, nồng độ \(216 / 36 = 6\). Các phương án 0 5 31 0 hay 0 5 0 31 cũng dùng \(36\) chai nhưng có số chai loại \(1\) ít hơn nên không được chọn.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.