짐 싸기
시간 제한1초메모리 제한256 MB
상점에서 배낭을 가장 적게 사서 모든 짐을 쪼개지 않고 용량 안에 나눠 담습니다.
문제
야영을 떠날 때가 됐다. 야영에는 이런저런 물건이 필요하고 그 물건을 직접 들고 다녀야 하니, 무엇이 정말 필요한지 정하는 일이 중요하다. 다행히 가져갈 물건은 이미 골라 두었고, 이제 남은 일은 물건을 배낭에 나눠 담는 것뿐이다.
배낭 하나에는 물건을 몇 개든 넣을 수 있지만, 넣은 물건의 무게 합이 그 배낭의 최대 적재량을 넘어서는 안 된다. 물건은 쪼갤 수 없어서 산 배낭의 용량을 다 쓰지 못할 수도 있다.
문제는 배낭이 아직 없어서 사야 한다는 점이다. 가게에는 최대 적재량이 서로 다른 배낭이 여러 개 있고, 값은 모두 같다. 물건을 전부 담을 수 있을 만큼 배낭을 사되, 돈은 가장 적게 쓰는 것이 목표다.
입력
첫째 줄에 담을 물건의 개수 과 가게에 있는 배낭의 개수 이 주어진다. (, )
둘째 줄에 개의 정수 이 주어진다. 는 번째 물건의 무게다. ()
셋째 줄에 개의 정수 이 주어진다. 는 번째 배낭의 최대 적재량이다. ()
출력
첫째 줄에 물건을 모두 담는 데 필요한 배낭의 최소 개수를 출력한다. 물건을 모두 담는 것이 불가능하면 대신 NIE를 출력한다.
힌트
첫 번째 예제에서는 첫 번째 배낭과 세 번째 배낭을 사면 된다. 가장 무거운 물건은 적재량이 11인 배낭에 넣고, 남은 물건은 적재량이 9인 배낭에 넣는다.