Problem1320--류주의 매점투어 III

1320: 류주의 매점투어 III

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 127  Solved: 59
[Submit] [Status] [Web Board] [Creator:]

Description

류주는 요새 끼니를 매점에서 때우는 것을 즐긴다. 그러나 문제가 있으니 매점에 갈 때마다 아무 생각 없이 계산하다보면 주머니엔 어느새 잔돈이 가득하다는 것이다.

류주는 잔돈을 가지고 다니는 것을 싫어하므로 되도록 거스름돈을 받지 않고 물건을 사고싶다.

류주가 사려는 물건의 가격과 류주가 가지고 있는 돈의 권종이 주어질 때 거스름돈을 받지 않고 물건을 살 수 있는지 없는지를 구하는 프로그램을 작성하시오
 

Input

첫 줄에 Test Case T가 입력 된다.(1 <= T <= 20)

Test Case의 첫 줄에는 류주가 사려는 물건의 가격 n과 류주가 가지고 있는 돈의 권종의 가지수 m이 빈 칸을 구분으로 입력된다. 동일한 권종이 입력 될 수 있으며, 사용할 수 있는 금액별 권종의 갯수는 제한이 없다.

그 다음 줄에는 m개 만큼의  권종의 액면 급액  Xi가 빈 칸을 구분으로 한 줄에 입력된다.

(1 n 100,000) (1 m 20) (1 Xi 50,000)
 

Output

Test Case에 대해 한 줄에 거스름돈을 받지 않고 물건을 살 수 있으면 지불할 총 권종의 최소 갯수를 출력하고, 아니면 “NO”를 출력한다.



Sample Input Copy

3
20 4
1 5 10 16
4000 5
500 500 800 2500 5000
1000 4
7 999 998 997

Sample Output Copy

2
4
NO

HINT

동적 계획법 활용 문제

Source/Category

LAVIDA