용량 C인 N개의 병 사이에서 한 병이 비거나 가득 찰 때까지 주스를 부어, 모든 병의 최종 양에 대한 가격 합을 최대로 만든다.
어려움8동적 계획법그리디수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB최대 용량이 C리터인 병이 N개 있다. i번 병에는 키위주스가 Bi리터 들어 있다.
도토리는 이 키위주스를 팔아 노트북을 새로 사려고 한다. 주스 한 병의 값은 그 병에 들어 있는 양으로만 정해진다. 0리터부터 C리터까지 양마다 값이 따로 매겨져 있고, 많이 들어 있다고 해서 값이 더 비싸지는 않다. 0리터가 든 병 하나가 C리터로 가득 찬 병 하나보다 비쌀 수도 있다.
도토리는 병을 그대로 팔지 않고 주스를 서로 옮겨 담아 값을 더 올리려고 한다. 옮겨 담는 규칙은 이렇다. 서로 다른 두 병 A와 B를 골라 A에서 B로 주스를 옮기면, A가 비거나 B가 가득 찰 때까지 멈추지 않고 부어야 한다. 예를 들어 C=10이고 A에 5리터, B에 7리터가 들어 있으면 옮긴 뒤 A는 3리터, B는 10리터가 된다. 같은 조건에서 A가 3리터, B가 4리터였다면 옮긴 뒤 A는 0리터, B는 7리터가 된다.
옮겨 담는 횟수에는 제한이 없다. 도토리는 주스가 모두 팔린다고 확신하므로 병 N개의 값을 전부 더한 금액을 받는다. 도토리가 받을 수 있는 금액의 최댓값을 구하여라.
첫째 줄에 병의 개수 N과 병의 최대 용량 C가 주어진다. (1≤N≤15, 1≤C≤49)
둘째 줄에 각 병에 들어 있는 주스의 양 B1,B2,…,BN이 주어진다. (0≤Bi≤C)
셋째 줄에 양마다의 값 P0,P1,…,PC가 0리터부터 C리터까지 차례로 주어진다. (0≤Pi≤106)
도토리가 받을 수 있는 금액의 최댓값을 한 줄에 출력한다.