DHBB 2026 - DX36 - 10 - Phần tử quan trọng

Xem dạng PDF

Gửi bài giải

Điểm: 35,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout
Test chính thức

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong 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

Cho một tập hợp số tự nhiên ~A=\{a_1,a_2,\dots,a_n\}~ gồm ~n~ phần tử, các phần tử có thể đôi một bằng nhau.

Ta nói rằng tập ~A~ có thể dựng được số ~S~ khi và chỉ khi tồn tại một hoặc một vài phần tử trong ~A~ sao cho tổng của chúng bằng ~S~. Nói cách khác, tập ~A~ có thể dựng được số ~S~ khi và chỉ khi tồn tại một dãy chỉ số ~1 \le i_1<i_2<\dots<i_k \le n~ sao cho ~a_{i_1}+a_{i_2}+\dots+a_{i_k}=S~.</p>

Nhận thấy rằng, có thể có các phần tử trong tập hợp ~A~ có tính chất quan trọng trong việc dựng nên số ~S~, nghĩa là khi loại bỏ phần tử đó ra khỏi tập ~A~, tập hợp thu được không thể dựng được số ~S~. Ta gọi một phần tử ~x \in A~ là quan trọng khi và chỉ khi:

  • ~A~ dựng được số ~S~; và

  • ~A-\{x\}~ không dựng được số ~S~.

Với mỗi phần tử ~a_i~ ~(1 \le i \le n)~, bạn hãy xác định xem nó có phải là phần tử quan trọng hay không.

Input

  • Dòng ~1~: Gồm hai số nguyên dương ~N,S~ ~(1 \le N \le 3000)~.

  • Dòng ~2~: Gồm ~N~ số nguyên dương mô tả tập hợp ~A~ ~(1 \le a_i \le S \le 3000)~.

Output

Gồm ~n~ dòng, mỗi dòng thứ ~i~ là YES (nếu ~a_i~ là phần tử quan trọng) hoặc NO (nếu ~a_i~ không là phần tử quan trọng).

Scoring

Subtask Điểm Ràng buộc
1 ~28\%~ ~N \le 15~
2 ~32\%~ ~N \le 100~
3 ~40\%~ Không có ràng buộc gì thêm

Sample Input 1

4 10
4 5 6 6

Sample Output 1

YES
NO
NO
NO

Sample Input 2

9 40
1 2 3 4 5 6 7 8 9

Sample Output 2

NO
NO
NO
NO
NO
YES
YES
YES
YES

Notes

Từ các số đã cho, chỉ có thể dựng số ~10~ từ ~4~ và ~6~. Vì ~a_3=a_4=6~, ta có thể loại số này để lấy số kia. Nói cách khác, vì ~a_1+a_3=a_1+a_4=10~ nên chỉ có ~a_1~ là phần tử quan trọng.


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.