방문할 상점을 최대 k곳 고른 뒤 모든 골동품을 진품이나 모조품 중 하나로 사야 하며, 총비용의 최솟값을 구한다.
보통7완전 탐색비트 연산그리디구현아직 제출이 없습니다시간 제한10초메모리 제한512 MB내일 집에서 파티를 연다. 파티 장소인 집을 꾸미려고 골동품을 사기로 했다.
사려는 골동품은 n개이고, 도시에는 골동품 가게가 m개 있다. 골동품은 아주 희귀해서 각 골동품의 진품을 파는 가게는 도시에 하나뿐이다. 가게는 모조품도 파는데, 각 골동품의 모조품을 파는 가게 역시 도시에 하나뿐이다. 진품을 파는 가게와 모조품을 파는 가게가 늘 다른 것은 아니다.
대부분의 사람은 진품과 모조품을 구별하지 못하므로 어느 쪽을 사도 장식 효과는 똑같다. 값은 가게가 정하기 때문에 모조품이 진품보다 비싼 경우도 있다. 파티가 내일이라 가게는 최대 k곳까지만 들를 수 있다. 골동품 n개마다 진품이나 모조품 중 한 가지를 사야 하고, 물건은 직접 들른 가게에서만 살 수 있다.
가게가 3개, 사려는 골동품이 3개인 경우를 보자.
들를 수 있는 가게가 2곳이면 가게 1과 가게 3을 고른다. 가게 1에서 골동품 1의 진품을 30에, 가게 3에서 골동품 2의 모조품을 10에, 가게 3에서 골동품 3의 진품을 20에 산다. 합계는 60이고, 다른 어떤 두 가게를 골라도 이보다 싸지 않다. 들를 수 있는 가게가 1곳이면 세 골동품을 모두 갖춘 가게가 없으므로 불가능하다.
가게를 최대 k곳 들러서 골동품마다 한 가지씩 사는 최소 비용을 구하라.
첫째 줄에 정수 n, m, k가 공백으로 구분되어 주어진다 (1≤n≤100, 1≤k≤m≤40). n은 사려는 골동품 개수, m은 도시의 가게 개수, k는 들를 수 있는 가게 개수다.
다음 n개 줄에는 골동품 하나를 나타내는 정수 a, p, b, q가 공백으로 구분되어 주어진다.
a와 b는 같을 수 있다.
가게를 k곳 이하로 들러서 골동품마다 한 가지씩 사는 최소 비용을 출력한다. 그렇게 살 수 없으면 -1을 출력한다.