만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

베개 쌓기

시간 제한3초메모리 제한1024 MB

요약
베개 종류 N개의 부드러움 값과 목표 값 C가 주어질 때, 부드러움이 C인 베개를 제외하고 쌓아서 합이 C가 되는지 판별합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

Eleanor는 최근 가장 아끼던 베개를 잃어버렸다. 그녀는 베개에 까다로워서 베개를 부드러움으로 분류한다. 잃어버린 베개의 부드러움은 CC였고, 이 정확한 부드러움이 아니면 잠들지 못한다. 그녀가 쓸 수 있는 다른 종류의 베개 중에는 부드러움이 CC인 것이 없을 수도 있다. 그래서 베개를 여러 개 쌓아서 자는 방법을 쓰려고 한다.

부드러움이 C1,C2,…,CkC_1, C_2, \ldots, C_k인 베개를 이 순서대로 쌓으면, 결과 부드러움은 다음과 같다.

C1+⌈C22⌉+⌈C34⌉+⋯+⌈Ck2k−1⌉C_1 + \left\lceil \frac{C_2}{2} \right\rceil + \left\lceil \frac{C_3}{4} \right\rceil + \cdots + \left\lceil \frac{C_k}{2^{k-1}} \right\rceil

즉 ii번째 베개는 자신의 부드러움에 2−(i−1)2^{-(i-1)}을 곱한 값을 올림하여 더한다. ⌈f⌉\lceil f \rceil는 x≥fx \geq f를 만족하는 가장 작은 정수 xx이다.

Eleanor는 돈이 많아서 쓸 수 있는 베개 종류마다 개수 제한 없이 쓸 수 있다. 베개를 쌓아서 부드러움 CC에 도달할 수 있는지 판단하라.

입력

첫 줄에 두 정수 NN과 CC가 주어진다(1≤N≤1031 \leq N \leq 10^3, 1≤C≤1041 \leq C \leq 10^4). NN은 Eleanor가 쓸 수 있는 베개 종류의 수이고, CC는 원하는 부드러움이다. 둘째 줄에는 NN개의 정수 a1,a2,…,aNa_1, a_2, \ldots, a_N이 주어진다(1≤ai≤10181 \leq a_i \leq 10^{18}). 각 값은 해당 베개 종류의 부드러움이다.

출력

베개를 쌓아서 부드러움 CC를 만들 수 있으면 YES를, 없으면 NO를 출력한다.

예제3

  1. 예제 1

    입력
    1 1000
    1
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    1 5
    4
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    2 100
    51 98
    
    예상 출력
    YES