만드는 중입니다

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

또 다른 동전 문제

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

요약
동전 N종류의 개수와 가치가 주어질 때, 일부 동전을 골라 합이 정확히 X가 되는지 판별하고, 가능하면 종류별 사용 개수를 출력합니다.
난이도

어려움10점 중 8점

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

문제

동전이 NN종류 있습니다. ii번째 종류의 동전은 CiC_i개 있고, 동전 한 개의 가치는 ViV_i원입니다. (1≤i≤N)(1 \le i \le N) 동전을 적당히 골라 가치의 합이 정확히 XX원이 되도록 만들 수 있나요? 가능하다면 방법을 하나 출력하세요.

입력

첫 줄에 테스트케이스의 수 TT가 주어집니다. (1≤T≤100)(1 \le T \le 100)

각 테스트케이스의 첫 줄에는 NN과 XX가 공백으로 구분되어 주어집니다. (1≤N≤50;1≤X≤1018)(1 \le N \le 50; 1 \le X \le 10^{18})

다음 NN개의 줄 중 ii번째 줄에는 CiC_i와 ViV_i가 공백으로 구분되어 주어집니다. 한 테스트케이스에서 주어지는 모든 ViV_i는 서로 다릅니다. (1≤Ci≤1012;1≤Vi≤500 000)(1 \le C_i \le 10^{12}; 1 \le V_i \le 500\,000)

모든 테스트케이스에 걸친 NN의 합은 500500을 넘지 않으며, 주어지는 모든 ViV_i의 합은 500 000500\,000을 넘지 않습니다.

출력

각 테스트케이스에 대해, 동전을 골라 가치의 합이 정확히 XX원이 될 수 있으면 첫 줄에 YES를, 없으면 NO를 출력하세요. YES를 출력했다면 둘째 줄에 공백으로 구분된 정수 A1,⋯ ,ANA_1, \cdots, A_N을 출력하세요. 각 수는 다음 조건을 만족해야 합니다.

  • 0≤Ai≤Ci0 \le A_i \le C_i (1≤i≤N)(1 \le i \le N)
  • A1V1+A2V2+⋯+ANVN=XA_1V_1 + A_2V_2 + \cdots + A_NV_N = X

예제1

  1. 예제 1

    입력
    2
    4 361
    3 1
    4 5
    5 10
    6 50
    4 364
    3 1
    4 5
    5 10
    6 50
    
    예상 출력
    YES
    1 2 5 6
    NO