수수께끼
시간 제한1초메모리 제한128 MB
동전을 앞에서부터 몇 개 가져와야 1부터 K까지 모든 금액을 부분집합 합으로 만들 수 있는지, 도달 가능한 구간을 확장하는 그리디 방법으로 구하고 불가능하면 -1을 출력합니다.
문제
엘레오노라의 할머니 서차(Sercha)는 손주들에게 수학 수수께끼 내기를 좋아합니다. 지난 가족 여행에서 할머니는 이런 문제를 냈습니다.
"어떤 가게가 부터 까지의 가격이 매겨진 상품을 판다고 하자. 나는 개의 동전을 가지고 있고, 그 액면가는 순서대로 이란다. 나는 나이가 많아 되도록 적은 수의 동전만 챙기고 싶구나. 부터 하나씩 순서대로 동전을 챙긴다고 할 때, 앞에서부터 몇 개를 챙기면 챙긴 동전들의 부분집합으로 부터 까지의 모든 가격을 정확히 지불할 수 있겠니?"
엘레오노라는 몇 초 만에 답을 말하고는 생각했습니다. "이런 기본적인 알고리즘쯤은 이제 쉬워요!"
엘레오노라를 도와주세요. 주어진 순서대로 앞에서부터 동전을 챙길 때, 챙긴 동전들의 부분집합의 합으로 부터 까지의 모든 금액을 만들 수 있게 되는 데 필요한 최소 동전 개수를 구하세요. 개를 모두 챙겨도 불가능하면 을 출력합니다.
입력
첫 줄에 테스트 케이스의 수 가 주어집니다.
각 테스트 케이스의 첫째 줄에는 두 정수 과 가 주어집니다 (, ). 둘째 줄에는 개의 동전 액면가 이 순서대로 공백으로 구분되어 주어집니다 ().
출력
각 테스트 케이스마다, 앞에서부터 순서대로 동전을 챙길 때 부터 까지의 모든 가격을 챙긴 동전들의 부분집합의 합으로 지불할 수 있게 하기 위해 챙겨야 하는 최소 동전 개수를 한 줄에 출력합니다. 개를 모두 챙겨도 불가능하면 을 출력합니다.